shell_exec("traceroute IPaddress)
返回traceroute to IPaddress (IPaddress), 30 hops max, 40 byte packets
如何检索实际的跃点列表,以便知道问题发生在哪里?
shell_exec("traceroute IPaddress)
返回traceroute to IPaddress (IPaddress), 30 hops max, 40 byte packets
如何检索实际的跃点列表,以便知道问题发生在哪里?
这些消息应该被写入stderr
而不是常规的stdout
,所以我不太确定为什么你会看到它们出现在输出中。
而不是shell_exec()
我建议使用exec()
,因为它同时捕获了输出和进程的返回码:
exec('traceroute example.com 2>&1', $out, $code);
if ($code) {
die("An error occurred while trying to traceroute: " . join("\n", $out);
}
print_r($out);
为了稍微加快命令速度,您可以-n
在运行时使用该选项,traceroute
以避免必须对中间跃点进行 DNS 查找。
请注意,运行traceroute
可能需要一段时间;如果您在命令行上运行它,您有时会看到其中包含* * *
的行,这可能需要很长时间!
使用 exec 并查看它的第二个参数:
string exec ( string $command [, array &$output [, int &$return_var ]] )
例子 :
<?php
exec('traceroute test.com -m 2', $output);
var_dump($output);