【发布时间】:2014-08-27 13:07:08
【问题描述】:
我编写了一个小脚本,通过write() 向一台Linux 机器发出一系列命令,每个命令之间有5 秒sleep()。手动输入时完全相同的命令有效,但尽管连接成功,但从 PHP 脚本中使用时似乎无效。
既然如此,我很好奇在发出write() 命令之前使用read() 是否绝对必要?
<?php
include('Net/SSH2.php');
$serverhostname = "IP_HERE";
$ssh_username = "root";
$ssh_password = "PASS_HERE";
// Establish new SSH2 Connection
$connection = new Net_SSH2($serverhostname, 22);
if($connection->login($ssh_username, $ssh_password))
{
echo "LOGGED IN! </br>";
sleep(5);
$result = $connection->write('en PASS_HERE\r\n');
echo "RESULT: " . $result . " </br>";
sleep(5);
$result = $connection->write('configure terminal\r\n');
echo "RESULT: " . $result . " </br>";
sleep(5);
$result = $connection->write('interface ve 110\r\n');
echo "RESULT: " . $result . " </br>";
sleep(5);
$result = $connection->write('port-name Test_Brett\r\n');
echo "RESULT: " . $result . " </br>";
}
else
{
echo "SSH Connection Failed. Check that the remote host is online and accepting connections!";
}
?>
更新
$result = $connection->write('en PASS_HERE\n');
$result = $connection->write('configure terminal\n');
$result = $connection->write('interface ve 110\n');
$result = $connection->write('port-name Test_Brett\n');
$connection->setTimeout(5);
echo $connection->read();
【问题讨论】:
-
这里发送\r\n是否正确?当您以交互方式执行此操作时,您可能会按下我希望只发送 \r 的回车键。
-
根据我的经验,您需要发送的是 \n - 而不是 \r。
-
我正在尝试使用“\n”、“\r”和“\r\n”。文档说它将是取决于操作系统的 3 个之一,但我只是碰巧在此处设置了“\r\n”。在大多数情况下,我只使用“\n”进行测试。
标签: php linux ssh phpseclib libssh2