ICMP Echoの送受信(Net::Ping)
Net::PingはTCP,UDP,ICMPを利用したネットワークの疎通チェックを行えます。 デフォルト状態では、Net::PingはTCPを利用します。 UNIXにおける一般的なpingコマンドと同様にICMPを利用したNet::Pingを使うにはnew("icmp")とする必要があります。
Net::Pingサンプル
以下に単純なサンプルを示します。
#!/usr/bin/perl
use Net::Ping;
# 確認する機器の名前もしくはIPアドレス
$dest = "localhost";
$p = Net::Ping->new("icmp");
# pingを実行
$result = $p->ping($dest);
# 結果の確認
if ($result) {
print "$dest is alive\n";
} else {
print "error\n";
}
# 終了する
$p->close();
exit;
上記スクリプトを実行するにはroot権限が必要です。 これは、ICMPを送信するためのraw socketがroot権限を必要とするためです。
Net::Pingには、RTTを計測できる機能もあります。