【问题标题】:PHP ssh2_exec() not workingPHP ssh2_exec() 不工作
【发布时间】:2016-04-07 18:15:55
【问题描述】:

我想通过我的服务器上的 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);
?>

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

【问题讨论】:

  • 由此产生的任何错误?
  • 不,只是空白页... exec 一定有一些想法,因为正如我所写,当我进入设备日志时,我可以看到 SSH 已连接并已通过身份验证。
  • 执行稍微不那么激烈的命令(例如 ls)吗?
  • 我可以使用的命令种类有限。不支持 LS。它不是标准的 linux shell。我尝试了许多受支持的命令,现在我正在尝试仅调试重新启动命令。

标签: php ssh


【解决方案1】:

我用这段代码解决了我的问题...在命令后使用带有睡眠的交互式 shell。并且工作正常。

<?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);
?>

【讨论】:

    猜你喜欢
    • 2015-01-30
    • 2013-07-30
    • 2019-02-15
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多