我是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的新手,所以这就是我自己尽力而为。
所以说,如果有人有任何类型的见解,有用的链接,提示,任何东西 - 非常感谢!
答案 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)
我会尝试解释为了达到你想要的目的而需要完成的步骤。
您需要在网站上的某个位置使用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>
您将不得不研究一种名为JavaScript的语言。 JavaScript将允许您获取在文本框中输入的值,并通过名为Ajax的东西将它们发送到PHP。
http://www.w3schools.com/ajax/ajax_intro.asp
简而言之,Ajax是您的网站与服务器和客户端进行通信的一种方式。您可以将数据从客户端(HTML页面)发送到服务器(PHP)并处理数据。
还有另一种选择,您可以使用当前代码并在action
标记中添加<form>
属性,并将用户重定向到您的PHP页面,然后使用{{1}获取数据如你所愿。
完成上述步骤后,无论是Ajax发布还是表单发布,您现在都可以在PHP中处理所有值。