我正在尝试SSH到远程服务器,以检查是否存在特定文件。
我可以在命令行中使用SSH,但是每当我尝试使用脚本时,它不会返回任何东西/我必须键入“退出”,然后按下回车键返回命令行。
步骤:
ssh root@website.com网站
CD..
拉美特酒店
我把所有这些命令放到输出中,所以它们看起来像这样:

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

echo($output2);

我很困惑为什么这直接在命令行中工作,但在脚本中却失败了。非常感谢您的帮助

最佳答案

以下是您交互执行的操作:
在当前外壳中运行
ssh root@website.com中输入cd ..
ssh中输入ls *ATMEXTRACT*
输入sshexit,现在退出
回到原来的状态
以下是你在剧本中所做的:
在新的shell中运行ssh并退出它
在第二个shell中运行ssh root@website.com并退出它
在第三个shell中运行cd ..并退出它
您可以尝试打开ssh命令并与之交互,但也可以省去麻烦,使用ls *ATMEXTRACT*的命令行功能指定要运行的命令:

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

请注意,这可能会在php网站脚本中失败,因为您需要设置身份验证机制。即使手动登录到Web服务器并尝试时ssh连接时没有密码,也会出现这种情况。

10-05 23:05
查看更多