我在使用PHP SSH2命令时遇到了一些问题。 因此,我已经成功地将专用服务器与应用程序相连,但是我不知道如何使用该命令运行命令。 当我写类似
的内容时,我正在使用phpsclib(http://phpseclib.sourceforge.net)echo $ssh->read('username@username:~$');
$ssh->write("ls -la\n");
echo $ssh->read();
它将给我一个来自root的列表,但是问题是我不想成为root。 我需要cd / another_file并执行将启动游戏服务器的命令。 我尝试过
$ssh->write("cd /another_file");
$ssh->write("my command here");
但是没有成功,它在同一行显示命令。 任何想法如何做到这一点?
答案 0 :(得分:0)
您有几种选择。
使用$ssh->write()
链接命令:
$ssh->write("cd /another_file && ls -la\n");
...或...
$ssh->write("cd /another_file; ls -la\n");
使用$ssh->exec()
约束命令。除了不需要将\n
附加到命令并且不需要打扰$ssh->read()
之外,其工作方式与上述方法基本相同。
执行多个$ssh->write()
调用,这是您当前尝试执行的操作。但这是错误的:
$ssh->write("cd /another_file");
$ssh->write("my command here");
在您的第一个代码段中,您要附加一个\n
,但您并不需要在这些行中添加。您需要这样做是因为,当您处于交互式外壳中时,外壳知道您已经完成键入命令的方式是因为您按下了回车按钮。这就是Linux知道您已经完成输入并准备运行命令的方式。
在运行下一个命令之前,您还需要阅读提示。例如。 $ssh->read('[prompt]')
或适合您系统的任何内容。我想您可以像在第一个代码段中一样完全忽略将参数一起传递给$ssh->read()
,但是$ssh->read()
可能需要10秒钟左右的时间才能返回任何输出或者立即返回输出。