在PHP

时间:2016-07-09 18:33:33

标签: php ssh

我想在执行第一个命令后执行第二个命令,但它不适用于我...这是我的代码

<?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继续执行任务,即时获取脚本的第一个索引的值,但我不知道如何在第一个命令之后执行它。

picture

//编辑

我需要传递$ _POST [&#34; value&#34;]作为第二个命令。

1 个答案:

答案 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);