【问题标题】:php/ssh2 script does not display the stdout to $streamphp/ssh2 脚本不显示标准输出到 $stream
【发布时间】:2011-01-18 05:54:12
【问题描述】:

以下 php 脚本适用于简单的 linux 命令,例如 ps -ef ,但是当我使用 ./dstat -t -a 时,它似乎挂起并且我没有在本地机器上得到提示。请记住,所有命令都是通过 ssh 在远程主机上执行的:

<?php
$target = time() . '_' . 'txt';

if($ssh = ssh2_connect('10.1.0.174', 22)) {
    if(ssh2_auth_password($ssh, 'root', 'kmoon77')) {
        //$stream = ssh2_exec($ssh, 'whoami');
        $sCommand = 'dstat -a';
        //$sCommand = 'ps -ef';
        $stream = ssh2_exec($ssh, $sCommand);
        //$stream = ssh2_exec($ssh, 'pwd');
        stream_set_blocking($stream, true);
        $data = '';
        while($buffer = fread($stream, 4096)) {
            $data .= $buffer;
        }
        //fclose($stream);
        echo $data; // user
    }
}
?>

【问题讨论】:

  • 问题可能出在dstat 无限期运行?
  • 马里奥,是的,这就是问题所在,很明显,但我忽略了,所以我使用以下命令作为一个小示例:$sCommand = "cd /root/dstat-0.7.2 ; ./dstat - cdngy 5 3 >> test.txt";请注意,我们可以使用 ;拥有多个命令。

标签: php bash ssh


【解决方案1】:

感谢您发布您的根密码。

不,这不是亚马逊内部 IP 吗?

但是您的问题可能是脚本一直在运行(或者更确切地说是命令)。

尝试像fpassthru("ssh -i keyfile -l login name myserver.com dstat -a"); 这样你应该“看到”一些东西。

【讨论】:

  • 那不是真正的root密码,并且IP是内部IP,与亚马逊或任何商业网站无关:)。感谢您的提示
猜你喜欢
  • 2015-03-16
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多