【问题标题】:Running ssh command whit php [closed]使用 php 运行 ssh 命令 [关闭]
【发布时间】:2015-12-23 05:45:22
【问题描述】:

好的,我得到了这个代码

<?php
    $host = "MYSERVERIP";
    $user = "root";
    $password = "123456";
    $command = $_GET["command"];

    if($command != null) {
        //HERE I WANT THE PHP TO SEND THE COMMAND TO THE SERVER
    } else {
        echo"No command were given!";
    }
?>

只是我希望它像这样工作:假设我去MYSERVERIP/sendcommand.php?command=reboot 然后我希望我的服务器重新启动,我该怎么做?我的服务器正在运行 debian。

我试图通过阅读 http://php.net/manual/en/function.ssh2-exec.php 来理解它,但这并没有让我明白:/

【问题讨论】:

  • 当你说“那不会把我带到某个地方”时,你是什么意思?当你尝试使用它时发生了什么?

标签: php linux ssh command debian


【解决方案1】:

如果你想在 php 运行的同一台服务器上运行命令 - 只需使用 exec 或 shell_exec

【讨论】:

  • 是的,但我如何建立连接?
  • 连接到什么?如果您在 linux 上工作以获取示例,只需将 php -r "exec('ls -lah');" 放在控制台中或将其放入 php 文件中..
【解决方案2】:

你的链接上有一个例子......

与你的东西混合看起来像

$host = "MYSERVERIP";
$user = "root";
$password = "123456";
$command = $_GET["command"];

if($command != null) {
    $connection = ssh2_connect('shell.example.com', 22);
    ssh2_auth_password($connection, 'username', 'password');

    $stream = ssh2_exec($connection, $_GET["command"]);
} else {
    echo"No command were given!";
}

假设服务器会接受这样的命令

【讨论】:

    【解决方案3】:

    如果你的文件和你的php文件是同一台服务器,你可以使用

    exec() or shell_exec( string $cmd )
    

    如果不是同一台服务器,这是不可能的,我所知道的

    【讨论】:

      【解决方案4】:

      如果您想在与运行 PHP 的服务器不同的服务器上发出命令,则需要以 ssh2_connect 开头。

      如果您想在服务器本地发出命令,请从阅读 program execution 开始。

      我建议您密切注意这方面的安全性。 您还应该知道,如果您在共享主机环境中,这两个选项可能会被禁用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 2021-08-27
        • 2020-07-12
        • 2011-01-31
        • 2019-05-20
        相关资源
        最近更新 更多