#! /usr/bin/perl
use strict;
use warnings;
use Net::Ping;
use MIME::Lite;
my $ip = "192.168.0.2";
die "usage: $0 <ip>\n" unless defined $ip;
die "error with ip address\n" if $ip !~ /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/;
my $cfg = {
email => 'user@dienst.de',
timeout => 3,
retry => 2
};
mail() unless ping();
sub ping {
my $p = Net::Ping->new("icmp");
my $success = 0;
for (my $i=0; $i<$cfg->{retry}; $i++) {
$success = $p->ping($ip, $cfg->{timeout});
die "error with ip address\n" unless defined $success;
last if $success;
}
return $success;
}
sub mail {
my $msg = MIME::Lite->new(
From => $cfg->{email},
To => $cfg->{email},
Subject => "Host down: $ip",
Type => 'TEXT',
Data => "ping $ip failed after $cfg->{retry} retrys"
);
$msg->send;
}