プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
perlにてpingプログラムを実装しているところですが
WEBに以下のように記載されていましたので実行したところ
icmp socket errorと表示されてしまいます。
>use Net::Ping;
>$host="xxx.xxx.xxx.xxx";
>$timeout=0.1;
>$pObj = Net::Ping->new("icmp");
>if($pObj->ping($host, $timeout)){
>print "$host is running.\n";
>$pObj->close();
>}
普通にpingを打つと応答します。
なぜでしょうか。
(OS:windowsXP)

A 回答 (2件)

試してみました。


コマンドプロンプトでは
管理者権限のユーザー=>192.168.1.7 is running.
管理者以外でだと =>何も表示されずに終了

そこで
print "Content-type: text/html\n\n";
print "<html>\n<h1>pingtest</h1>\n<pre>\n";
を付けてCGIにしてみると(XPhome+Apache For win32の1.3.34と2.0.55の両方)

CGIでなら管理者でもユーザーでも192.168.1.7 is running.が表示されました。(ま、当然か)

そこでfirewallの詳細設定でICMPをブロックすると
管理者だろうがCGIだろうが応答無しで
普通にping打つと Destination net unreachable.

アドバイスどころかむしろ混乱の元にならなければ良いですが
    • good
    • 0

perldoc Net::Pingには、「icmpを使用する場合、root権限で実行する必要がある」と書いてますので、WindowsだとAdministratorなら実行できるのでは。



参考URL:http://search.cpan.org/src/TEVERETT/Win32-PingIC …

この回答への補足

Administratorでも同様でした。

補足日時:2006/04/15 12:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!