マシン生存確認


 Net::Pingモジュールを使うと簡単です。
# TCPで確認
use strict;
use warnings;
use Net::Ping;

my $host = 'www.example.com';
my $timeout = 5;
my $port = 80;
my $p = Net::Ping->new("tcp");
$p->{port_num} = $port;
if ($p->ping($host, $timeout)) {
    print "$host:$port is alive\n";
} else {
    print "$host:$port is not alive\n";
}
# ICMPで確認
use strict;
use warnings;
use Net::Ping;

my $host = 'www.example.com';
my $timeout = 5;
my $p = Net::Ping->new("icmp");
if ($p->ping($host, $timeout)) {
    print "$host is alive\n";
} else {
    print "$host is not alive\n";
}
 ICMPで確認する場合Net::Pingではroot権限が必要になります。一般ユーザで実行する場合はNet::Ping::Externalを使います。
use strict;
use warnings;
use Net::Ping::External;

my $host = 'www.example.com';
my $timeout = 5;

my $is_alive = Net::Ping::External::ping(
    host => $host, timeout => $timeout);

if ($is_alive) {
    print "$host is alive\n";
} else {
    print "$host is not alive\n";
}

関連項目

なし