#! /usr/bin/perl use strict; use warnings; use Net::Ping; use MIME::Lite; my $ip = "192.168.0.2"; die "usage: $0 \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; }