繁体   English   中英

PHP:对远程主机执行服务器命令

[英]PHP: Execute Server Commands To Remote Host

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

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 的新手,所以这只是我自己尽力而为。

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

看到那个帖子:其他帖子

<?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来调用服务器端程序

我将尝试解释您需要执行的步骤才能完成您想要的操作。

  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属性添加到<form>标记并将用户重定向到您的 PHP 页面,然后根据需要使用$_POST获取数据。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM