phpseclib:"CAT" 命令随机运行

phpseclib: "CAT" command works randomly

我有一个从站点获取数据的脚本。 基本上它分为两个部分。 1.executes 在远程机器上执行命令并将输出保存在文件中 2.read 一个文件的内容。 由于某种原因,它有时会起作用。第 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".

因此,解决方案非常简单。我需要做的就是添加 "timeout"。 最终代码:

$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;