PHP ssh2_exec()无效

时间:2016-04-07 18:15:56

标签: php ssh

我希望在我的服务器上使用SSH在远程设备上连接并运行命令。当我在像Putty这样的SSH客户端中尝试命令时,它可以完美地运行。但是当我使用PHP脚本编写它时,该命令将不会被执行。有什么想法吗?

<?php
  $host = "192.168.0.184";
  $user = "user";
  $password = "password";
  $cmd = "reboot";
  $ssh = ssh2_connect($host);
  $sshLogin = ssh2_auth_password($ssh, $user, $password);
  $sshExec = ssh2_exec($ssh, $cmd);
?>

在设备日志中,我可以看到用户已成功通过身份验证,但没有其他内容。

1 个答案:

答案 0 :(得分:0)

我用这个代码解决了我的问题...使用交互式shell和sleep after命令。工作正常。

<?php
        echo "SSH connection: ";
        if (!($resource=@ssh2_connect("your_host"))) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";

        echo "Athetication: ";
        if (!@ssh2_auth_password($resource,"your_user","your_password")) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";

        echo "Shell: ";
        if (!($stdio = @ssh2_shell($resource,"xterm"))) {
                echo "[FAILED]<br />";
                exit(1);
        }
        echo "[OK]<br />";
        $command = "reboot\n";
        fwrite($stdio,$command);

        sleep(1);

        while($line = fgets($stdio)) {
                flush();
                echo $line."<br />";
        }

        fclose($stdio);
?>