我想在执行第一个命令后执行第二个命令,但它不适用于我...这是我的代码
<?php
include('Net/SSH2.php');
$owed = $_POST["value"];
$server = "127.0.0.1";
$username = "xxx";
$password = "xxx";
$command1 = "cd /var/www/ww && node bot.js";
$ssh = new Net_SSH2($server);
if (!$ssh->login($username, $password)) {
exit('Login Failed');
}
echo $ssh->exec($command1);
这一切都很好,它一直工作到这一步,但是..问题是在执行NODE之后要求VALUE继续执行任务,即时获取脚本的第一个索引的值,但我不知道如何在第一个命令之后执行它。
//编辑
我需要传递$ _POST [&#34; value&#34;]作为第二个命令。
答案 0 :(得分:0)
正如documentation所说,在这种情况下您可以使用write
5.1.4。 read()/ write()vs。exec()
write()将输入(例如命令)发送到服务器。一般, 操作系统不会处理命令,直到Enter键被击中, 所以为了模仿这个,你需要发送一个&#34; \ n&#34;,&#34; \ r \ n&#34;或者&#34; \ r&#34; 根据您所连接的服务器的操作系统而定 使用。请注意,尽管输入很可能是命令 并非必须如此。
你发送的内容将被解析 期待用户输入的文本。所以,如果你输入&#34; passwd \ n&#34;输入 - 直到&#34; \ n&#34;输入 - 将被passwd解析为新的或现有的 password - 不是shell运行的命令
所以你可能想要这样的东西:
<?php
include('Net/SSH2.php');
$owed = $_POST["value"];
$server = "127.0.0.1";
$username = "xxx";
$password = "xxx";
$ssh = new Net_SSH2($server);
if (!$ssh->login($username, $password)) {
exit('Login Failed');
}
echo $ssh->exec('cd /var/www/www');
echo $ssh->exec('node bot.js');
echo $ssh->write($owed);