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

时间:2014-09-18 20:44:15

标签: php ssh2-exec

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

所以说,如果有人有任何类型的见解,有用的链接,提示,任何东西 - 非常感谢!

2 个答案:

答案 0 :(得分: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来调用服务器端程序

答案 1 :(得分:0)

我会尝试解释为了达到你想要的目的而需要完成的步骤。

  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页面,然后使用{{1}获取数据如你所愿。

    以下是一个示例:http://www.w3schools.com/php/php_forms.asp

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