[PHP-users 32558] Re: Pear の Net_Ping について

富士通)小野 ono.1982.kenji @ jp.fujitsu.com
2007年 8月 23日 (木) 20:39:47 JST


 
 こさきさん今日は。

小野です。

色々、テストしてみました。

> まさかvar_dump($ping->ping(監視先IPアドレス));というコードではな
> いとは思いますが、var_dump($ping->ping("127.0.0.1")); で実行して
> も同じ状況でしょうか。(cliでも)

以下のようにIPアドレスを直接記述したら、あっと言う間に帰ってき
ました。

    $ping = Net_Ping::factory();
    if (PEAR::isError($ping)) {
        echo $ping->getMessage();
    } else {
        $wrtcode = $ping->setArgs(array("count" => 1 ,
        "size" => 32, "TTL" => 32, "timeout" => 5));
        var_dump($ping->ping("127.0.0.1");
        var_dump($ping->ping("192.168.1.1");
        var_dump($ping->ping("192.168.1.2");
  }

=====> 
それをIPを外部アドレスにして読み込んだ内容をpingメソッドに渡すと
戻ってこなくなりました。

$fp = fopen ("./conf/datafile.txt", "r");
while (!feof ($fp)) {
    $buffer = fgets($fp, 4096);
//
    $ping = Net_Ping::factory();
    if (PEAR::isError($ping)) {
        echo $ping->getMessage();
    } else {
        $wrtcode = $ping->setArgs(array("count" => 1 ,
        "size" => 32, "TTL" => 32, "timeout" => 5));
        var_dump($ping->ping($buffer); <= ★fgetsの戻り値をそのまま
  }
}

IPアドレスリストファイルはWindows上で作成し、BinaryモードでFTPで
サーバへ転送しています。

よって、ファイルの転送方法か、fgets の戻り値をそのまま渡すのがま
ずいんでしょうかね。
なんか、敗因は fopen, fgets, の方式がだめなのかな、と言う気がし
てきました。


=====>戻ってこないときの snoop icmp の結果
# ps -ef | gerp ping
usr1 26088 26086 0 19:20:21 ? 0:00 /usr/sbin/ping -s SV2
usr2 26086 22903 0 19:20:21 ? 0:00 sh -c /usr/sbin/ping -s SV2 32 1

bash-2.05# snoop icmp
Using device /dev/eri (promiscuous mode)
SV1 -> SV2 ICMP Echo request (ID: 26088 Sequence number: 120)
SV2 -> SV1 ICMP Echo reply (ID: 26088 Sequence number: 120)
SV1 -> SV2 ICMP Echo request (ID: 26088 Sequence number: 121)
SV2 -> SV1 ICMP Echo reply (ID: 26088 Sequence number: 121)
: 永遠と続きます。



PHP-users メーリングリストの案内