0
首先,PHP远不是我的特长,但我决心学习。我可能没有被分配到第一个PHP项目的最简单的任务,所以在我尝试和解释的时候请耐心等待。我想一个简单的表格中输入服务器名称,点击提交后发生以下有:PHP-运行远程SSH脚本并在网页上打印结果
- 复制脚本
- 执行脚本
- 返回结果
相反比解决这一切在一个大块,这是有道理的(对我)进行分解,并开始小:
<?php
$conn = ssh2_connect('10.x.x.x', 22);
ssh2_auth_password($conn, 'user', 'password');
ssh2_scp_send($conn, '/path/to/script', '/path/to/script', 0700);
$stream = ssh2_exec($conn, '/path/to/script');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
?>
# php –f name-of-script.php
这从命令行正常工作,并返回预期的响应。
我想延长这一点,并在浏览器中具有相同的功能,所以我创建了一个简单的形式如下:
<form action="name-of-script.php" method="POST">
Server Name: <input type="text" name="node" size="20">
<input type="submit" value="Submit">
</form>
然后改变了我的代码略有:
<?php
$node = $_POST["node"];
$conn = ssh2_connect($node, 22);
ssh2_auth_password($conn, 'user', 'password');
ssh2_scp_send($conn, '/path/to/script', '/path/to/script', 0700);
$stream = ssh2_exec($conn, '/path/to/script');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
?>
有我做了一个期望所有的SSH2函数产生与浏览器中的命令行相同的结果,这是一个基本的错误吗?在输入服务器名称并单击提交后,我目前看到的所有内容都是空白页面。
也许web服务器(或者通过Apache至少PHP如果CLI脚本适用于Web服务器)没有安装libssh2扩展。尝试在文件顶部添加'ini_set('display_errors',1);'看看它说了什么。 – neubert 2014-12-15 14:09:59
感谢您的回复。我添加了上述内容,但似乎没有任何区别。我相信(从我可以告诉),libssh2扩展已安装。我当然可以在浏览器中使用phpinfo()来看它。 – Dan 2014-12-17 17:35:37