我在 /home/pi/mydir 中有要执行的脚本,所以我需要做的第一件事是
$ssh->exec('cd mydir');
接着
$ssh->exec('./script');
但它不起作用所以有人可以帮助我吗?
cd /path/to/directory && your command
我的临时解决方案!
使用 \n :
$ssh->exec("cd mydir\n./script");
或者创建一个文件script.sh
(示例)并将其保存为 UNIX 格式:
cd mydir
./script
并执行这个脚本:
$script = file_get_contents("script.sh");
$ssh->exec($script);
这是 exec() 工作方式的一个基本限制。exec() 有点像……你打开 PuTTY,输入cd mydir
,重新启动 PuTTY,然后输入./script
. 如果你做了所有这些,你不会期望“./script”在“mydir”中运行。然而,这几乎就是 exec() 所做的。
在这种情况下,这不是 phpseclib 问题 - 它更多的是 SSH 问题。正如 SSH 规范所定义的,exec() 只是不支持它。
更多信息:
http://phpseclib.sourceforge.net/ssh/examples.html#chdir
我的建议:要么使用绝对路径,要么使用 read() / write()。
祝你好运!