我有一个从站点获取数据的脚本。 基本上它分为两部分。 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"。
答案 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;