SSH2 over PHP,Echo Back Results

时间:2010-02-28 22:22:24

标签: php ssh

我目前正在使用SSH2而不是PHP。这是我第一次这样做,我希望我能够得到一些可靠的反馈。

基本上,我尝试做的是验证服务器(通过SSH),运行命令,然后回显该命令的结果。

以下是我目前使用的内容:

if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("myserver.com", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username and password
if(!ssh2_auth_password($con, "myusername", "mypassword")) {
    echo "fail: unable to authenticate\n";
} else {
    // allright, we're in!
    echo "okay: logged in...\n";

    // execute a command
    if(!($stream = ssh2_exec($con, "ls -al" )) ){
        echo "fail: unable to execute command\n";
    } else{
        // collect returning data from command
        stream_set_blocking( $stream, true );
        $data = "";
        while( $buf = fread($stream,4096) ){
            $data .= $buf;
   echo $data;
        }
        fclose($stream);
    }
}
}
 ?>

现在,只是为了测试,我试图返回(回显)命令“ls -al”

我知道这个命令有效,因为我可以在Ubuntu的终端上这样做。最后,我知道它正在验证,因为,使用上面的当前代码,它回应“好吧:登录”。但是现在,这就是我所得到的一切 - 其他一切都是空白的。

对此的任何帮助都会很棒!

BTW,我正在尝试使用此处所示的方法:http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/

1 个答案:

答案 0 :(得分:2)

ssh2_exec()经常过早返回。我发现的唯一真正的解决方案是使用phpseclib - 纯PHP SSH2实现:

http://phpseclib.sourceforge.net/