php / ssh2脚本不会将stdout显示为$ stream

时间:2011-01-17 19:51:07

标签: php bash ssh

下面的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
    }
}
?>

1 个答案:

答案 0 :(得分:0)

感谢您发布根密码。

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

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

尝试像fpassthru("ssh -i keyfile -l login name myserver.com dstat -a");之类的东西然后你应该“看到”某些东西。