0

私の主な意図は、PHP を介して実行された traceroute コマンドから返されたデータを解析することです。

$output = shell_exec("traceroute www.xxx.com");
echo $output;

返される出力は次のようなものです

までのルートをたどる

www.x.com [173.xx.xx.xx] over a maximum of 30 
hops: 1 1 ms <1 ms <1 ms 192.168.1.1 2 10 ms 10 ms 10 ms 117.xx.xx.xx 
3 11 ms 9 ms 9 ms 218.xx.xx.xx 4 10 ms 11 ms 10 ms 218.xx.xx.xx 5 216 ms 220 
ms 229 ms 59.xx.xx.xx.static.xx.xx.xx [59.xx.xx.xx] 6 203 ms 203 ms 219 ms 
121xx.xx.xx
7 328 ms 371  ms 325 ms 72.xx.xx.xx 8 301 ms 306 ms 313 ms 72.xx.xx.xx 9 
249 ms 251 ms249 ms 72.xx.xx.xx 10 256 ms 254 ms 255 ms sin04s02xx.xx.xx
[173.xx.xx.xx] Trace complete.

毎回出力を解析または取得したい、

私はこれを試しました

traceroute www.google.com 2>/dev/null | awk 'NR==1

{ print $5;
   exit;
}

これにより、私が考えるホップの最大数が得られます。次のような単一の出力を取得するための同様のコマンドがある場合

1 1 ms <1 ms <1 ms 192.168.1.1
2 10 ms 10 ms 10 ms 117.xx.xx.xx
3 11 ms 9 ms 9 ms 218.xx.xx.xx

たぶん、ループなどに含めることができます。

4

1 に答える 1

1

使用できますpopen()

$handle = popen("traceroute www.xxx.com 2>&1", "r");
while(!feof($handle)) {
    $buffer = fgets($handle);
    $buffer = "<p>".$buffer."</p>\n";
    echo $buffer;
}
pclose($handle);
于 2012-10-06T13:40:52.543 に答える