我正在尝试通过 ssh 连接到远程服务器以检查特定文件是否存在。
我可以在命令行中使用 ssh,但每当我尝试使用我的脚本时,它都不会返回任何内容/我必须键入“exit”并按回车键才能返回到命令行。
步骤:
- ssh root@website.com
- CD ..
- ls ATMEXTRACT
我将所有这些命令放入输出中,因此它们看起来像这样:
$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");
echo($output2);
我很困惑为什么这可以直接在命令行中工作,但在脚本中却失败了。非常感谢任何帮助
最佳答案
这是您交互式执行的操作:
- 在当前 shell 中运行
ssh root@website.com
- 在
ssh
中输入cd ..
- 在
ssh
中输入ls *ATMEXTRACT*
- 在
ssh
中输入exit
,即退出
- 在
- 找回原来的样子
这是您在脚本中执行的操作:
- 在新的 shell 中运行
ssh root@website.com
并退出 - 在第二个 shell 中运行
cd ..
并退出 - 在第三个 shell 中运行
ls *ATMEXTRACT*
并退出
您可以尝试打开 ssh 命令并与之交互,但您也可以省去麻烦并使用 ssh
的命令行功能来指定要运行的命令:
$output = shell_exec("ssh root@website.com 'cd .. && ls *ATMEXTRACT*'");
请注意,这可能会因 PHP 网站脚本而失败,因为您需要设置身份验证机制。即使 ssh root@website.com
在您手动登录到 Web 服务器并尝试时没有密码连接也是如此。
关于php - 通过 PHP 执行 shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615962/