phpseclib SSH - 更改目录并运行脚本?

时间:2013-08-16 09:31:38

标签: php ssh phpseclib

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

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

然后

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

但它没有用,所以有人可以帮助我吗?

3 个答案:

答案 0 :(得分:4)

cd /path/to/directory && your command

我的临时解决方案!

答案 1 :(得分:4)

使用\ n:

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

或创建文件script.sh(示例)并以UNIX格式保存:

cd mydir
./script

并执行此脚本:

$script = file_get_contents("script.sh");
$ssh->exec($script);

答案 2 :(得分:2)

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

在这种情况下,它不是一个phpseclib问题 - 它更像是一个SSH问题。 exec(),正如SSH规范所定义的那样,并不支持它。

更多信息:

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

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

祝你好运!