2

我在 /home/pi/mydir 中有要执行的脚本,所以我需要做的第一件事是

$ssh->exec('cd mydir');

接着

$ssh->exec('./script');

但它不起作用所以有人可以帮助我吗?

4

3 回答 3

5
cd /path/to/directory && your command

我的临时解决方案!

于 2015-04-03T09:24:42.067 回答
5

使用 \n :

$ssh->exec("cd mydir\n./script");

或者创建一个文件script.sh(示例)并将其保存为 UNIX 格式:

cd mydir
./script

并执行这个脚本:

$script = file_get_contents("script.sh");
$ssh->exec($script);
于 2015-08-20T20:57:08.377 回答
3

这是 exec() 工作方式的一个基本限制。exec() 有点像……你打开 PuTTY,输入cd mydir,重新启动 PuTTY,然后输入./script. 如果你做了所有这些,你不会期望“./script”在“mydir”中运行。然而,这几乎就是 exec() 所做的。

在这种情况下,这不是 phpseclib 问题 - 它更多的是 SSH 问题。正如 SSH 规范所定义的,exec() 只是不支持它。

更多信息:

http://phpseclib.sourceforge.net/ssh/examples.html#chdir

我的建议:要么使用绝对路径,要么使用 read() / write()。

祝你好运!

于 2013-08-16T15:17:39.703 回答