【问题标题】:PHP SSH Commands Using phpseclib使用 phpseclib 的 PHP SSH 命令
【发布时间】:2017-07-29 10:58:49
【问题描述】:

我正在使用http://phpseclib.sourceforge.net/ 连接到我的 SSH 并为我的节点服务器运行一些命令。

它完美地使用:

echo "Restart...<br>";
echo "<pre>";
echo $ssh->exec('forever restartall');
echo "</pre>";

但是,一旦我使用以下代码,它就不会显示任何内容或运行任何内容:

echo "Starting...<br>";
echo "<pre>";
echo $ssh->exec('cd /var/www/html/game-api');
echo $ssh->exec('forever start server.js > stdout.txt 2> stderr.txt &');
echo "</pre>";

如果我直接从终端运行该命令,它将完美运行。

有什么想法吗?

【问题讨论】:

    标签: php ssh phpseclib


    【解决方案1】:

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

    echo $ssh->exec('pwd'); // outputs /home/username
    $ssh->exec('cd /');
    echo $ssh->exec('pwd'); // (despite the previous command) outputs /home/username
    

    连续调用 exec()

    如果在交互式 shell 上完成,您将收到的输出 第一个密码(取决于您的系统设置方式)会有所不同 比第二个密码的输出。然而,上面的代码 sn -p, 将产生两条相同的行。

    这样做的原因是您对 一旦运行了 exec() 并且通道,一次性 shell 就消失了 已被删除。

    您可以在 Linux 上通过 $ssh-&gt;exec('cd /; pwd') 解决此问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2014-12-06
      相关资源
      最近更新 更多