【问题标题】:PHP: Execute Server Commands To Remote HostPHP:执行服务器命令到远程主机
【发布时间】:2020-05-13 22:49:53
【问题描述】:

我是 PHP 世界的新手,但想设置一个相对简单的 PHP 脚本,当用户按下网页上的按钮时,该脚本将通过 ssh2_exec 向远程主机执行 shell 命令。我希望通过 POST 而不是 GET 来处理它。我想避免使用 bash 脚本进行 Web CGI。

在查看了this documentation on ssh2_exec 之后,我能够对需要做什么有所了解,但我仍然需要很多帮助。

为了帮助更好地理解我想要完成的工作,让我解释一下。我希望在页面上有两个文本字段和一个提交按钮。我们将这些文本字段称为$var1$var2。我希望用户填写两个文本字段,点击提交,然后将命令提交到远程服务器,如下所示:

# [root@server] $var1 /home/$var2.sh

现在我离我需要的地方很近,但以下是我自己编译的(非工作)代码,并正在寻找使其工作或改进的方法。此外,我意识到通过 PHP 脚本连接到远程服务器并以 root 身份运行命令并不是一个好主意。但这纯粹是为了开发/测试而没有生产。我只是想让自己熟悉这个过程。无论如何,这就是我所拥有的:

<?php
    $connection = ssh2_connect('192.168.1.1', 22);
    ssh2_auth_password($connection, 'root', 'password');

    if (isset($_POST['button']))
    {
         $stream = ssh2_exec($connection, 'touch /root/test/test.txt');
    }
?>
<html>
<body>
    <form method="post">
    <p>
        <button name="button">Touch</button>
    </p>
    </form>
</body>

再一次,我确信上面的代码对于开发人员来说看起来很糟糕而且完全不正确,但正如我所说,我是 PHP 新手,所以这只是我自己尽力而为。

话虽如此,如果有人有任何类型的见解、有用的链接、提示,任何东西 - 将不胜感激!

【问题讨论】:

  • 忘记整个 SSH 组件。你还没有接近那个阶段。您需要学习如何构建 HTML 表单,如何将字段放入该表单,将该表单提交到服务器,然后让服务器处理该表单。一旦你到了那个阶段,你的$var1$var2 的东西就变得微不足道了。
  • 你的代码还不错。它可能行不通,但写得还不错。我必须给你写这篇文章的道具。不应允许某些发帖人使用计算机。

标签: php ssh2-exec


【解决方案1】:

查看该帖子:Other post

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

使用这个库应该可以帮助你完成你所需要的。

只要是为了测试。否则,我会使用XML-RPC 来调用服务器端程序

【讨论】:

    【解决方案2】:

    我将尝试解释您需要完成的步骤以完成您想要的。

    1. 您将需要在您网站的某个位置创建一个 HTML 页面。这可能是一个 index.html 只是持有:

      <html> <body> <form method="post"> <input type="text" id="text1"><br> <input type="text" id="text2"><br> <button name="button">Touch</button> </form> </body>

    2. 您将不得不研究一种称为 JavaScript 的语言。 JavaScript 将允许您获取在文本框中输入的值并通过称为 Ajax 的东西将它们发送到 PHP。

      http://www.w3schools.com/ajax/ajax_intro.asp

      简而言之,Ajax 是您的网站与服务器和客户端进行通信的一种方式。您可以将数据从客户端(您的 HTML 页面)发送到您的服务器 (PHP) 并在那里处理数据。

      但是还有另一种选择,您可以使用当前代码并将action 属性添加到您的&lt;form&gt; 标记并将用户重定向到您的PHP 页面,然后根据需要使用$_POST 获取数据。

      这是一个例子:http://www.w3schools.com/php/php_forms.asp

    3. 完成上述步骤后,无论是 Ajax 发布还是表单发布,您现在都可以在 PHP 中处理所有值了。

    【讨论】:

    • 他还需要为他的“按钮”(应该是输入,而不是按钮)输入类型的提交才能提交表单。这将比 ajax 方法简单得多。
    猜你喜欢
    • 2022-01-27
    • 1970-01-01
    • 2019-03-06
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多