【发布时间】:2015-08-07 22:50:02
【问题描述】:
我正在尝试通过 SSH(使用 Net_SSH2 类)在我的 PHP 代码中连接到服务器,并在远程服务器上运行一些命令。
远程服务器输出bash: runmqsc: command not found。
奇怪的是,当我使用 MobaXterm SSH 到该服务器时,在该服务器上找到并运行完全相同的命令。
我确认代码使用正确的主机名、用户和密码进行连接。
有什么想法吗?
这就是我在 PHP 中所做的:
$this->ssh = new Net_SSH2("myhost");
$this->ssh->login("myuser", "mypass");
$command = "runmqsc MyQmgr \n DEFINE QLOCAL(MY_QUEUE) \n end \n";
$this->ssh->exec($command);
【问题讨论】:
-
myusershell 启动脚本是否设置了PATH等以使其工作?因为Net_SSH2可能没有启动加载这些的交互式会话。 -
@EtanReisner 如果是这样,那为什么要通过 MobaXterm 工作?
-
因为正在开始一个交互式会话。
-
您的意思是 Moba 在某处读取文件并相应地设置 PATH 吗?如果是,该文件在哪里?
-
没有。 MobaXterm 运行交互式 shell 会话。然后,您的 shell 会读取适合交互式会话的启动脚本。这些脚本可能设置了
$PATH。Net_SSH2可能没有开始一个交互式会话,因此这些会话不会被加载。看看.bashrc和.bash_profile。
标签: php linux bash ssh phpseclib