0

shell_exec("traceroute IPaddress)返回traceroute to IPaddress (IPaddress), 30 hops max, 40 byte packets

如何检索实际的跃点列表,以便知道问题发生在哪里?

4

2 回答 2

1

这些消息应该被写入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可能需要一段时间;如果您在命令行上运行它,您有时会看到其中包含* * *的行,这可能需要很长时间!

于 2012-12-04T12:07:22.560 回答
0

使用 exec 并查看它的第二个参数:

string exec ( string $command [, array &$output [, int &$return_var ]] )

例子 :

<?php

exec('traceroute test.com -m 2', $output);
var_dump($output); 
于 2012-12-04T11:34:23.590 回答