phpseclib:" CAT"命令随机工作

时间:2017-09-15 16:08:50

标签: ssh cat phpseclib

我有一个从站点获取数据的脚本。 基本上它分为两部分。 1.在远程计算机上执行命令并将输出保存在文件中 2.读取文件的内容。 由于某种原因,它不时有效。第1节始终有效(检查远程机器并找到文件)。问题与猫有关。 我已经在我的代码中添加了转储" CAT"的结果的选项。命令到文件。 有时它有信息有时它不会。但是文件总是被创建! 我查询的节点是相同的。在远程服务器上执行第1节的超时时间为11-12秒。

事先谢谢。

$ssh->exec("rm toolkit/mybatch/$newfileid");
                    $ssh->exec("mobatch $newsiteid 'lt all;ue print -admitted;' toolkit/mybatch");
                    $ssh->setTimeout(15);                       
                    echo $ssh->exec('cat ' . escapeshellarg("toolkit/mybatch/$newfileid") . '| grep -A 10 \'$ ue print \' > toolkit/mybatch/traffic.txt');
                    $traffic = $ssh->exec("cat toolkit/mybatch/traffic.txt");
                    $traffic = substr($traffic,21,-16);
                    $ssh->disconnect();
                    echo $traffic;

我已经更新了上面的代码,但是,它已经工作了好几次,但在删除旧文件之后,它只会创建" traffic.txt"有时它有信息,有时没有。 此外,文件" traffic.txtescapeshellarg"不再创建了。所以我被迫回到我之前的解决方案并阅读" traffic.txt"。

1 个答案:

答案 0 :(得分:0)

所以,解决方案非常简单。我需要做的就是添加"超时"。 最终代码:

$ssh->exec("rm toolkit/traffic/$newfileid");
                    $ssh->setTimeout(0);
                    $ssh->exec("mobatch $newsiteid 'lt all;ue print -admitted;' toolkit/traffic");
                    sleep(8);                   
                    $ssh->exec('cat ' . escapeshellarg("toolkit/traffic/$newfileid") . '| grep -A 10 \'$ ue print \' > toolkit/traffic/traffic.txt');

                    $traffic = $ssh->exec("cat toolkit/traffic/traffic.txt");
                    $traffic = substr($traffic,21,-83);
                    echo $traffic;