开发者社区> 问答> 正文

通过PHP执行shell命令?

我正在尝试SSH到远程服务器,以检查是否存在特定文件。

我可以在命令行中使用ssh,但是每当我尝试使用脚本执行时,它都不会返回任何内容/我必须输入“ exit”并按Enter键以返回命令行。

脚步:

ssh root@website.com 光盘.. ls ATMEXTRACT 我将所有这些命令放入输出,因此它们看起来像这样:

$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");

echo($output2);

展开
收起
祖安文状元 2020-01-08 15:40:13 745 0
1 条回答
写回答
取消 提交回答
  • 这是您交互式进行的操作:

    ssh root@website.com在当前shell中 运行 输入cd ..在ssh 输入ls ATMEXTRACT在ssh 输入exit的ssh,现在退出 找回原来的外壳 这是您在脚本中执行的操作:

    ssh root@website.com在新的shell中运行并退出 cd ..在第二个外壳中运行并退出 ls ATMEXTRACT在第三个外壳中运行并退出 您可以尝试打开ssh命令并与之交互,但也可以省去麻烦,并使用ssh的命令行功能指定要运行的命令:

    $output = shell_exec("ssh root@website.com 'cd .. && ls *ATMEXTRACT*'");
    
    

    请注意,这可能由于PHP网站脚本而失败,因为您需要设置身份验证机制。即使ssh root@website.com在您手动登录到Web服务器并尝试使用密码时没有密码连接也是如此。

    2020-01-08 15:40:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载