All pastes #977475 Raw Edit

Unbenannt

public text v1 · immutable
·published 2008-04-08 21:19 UTC
rendered paste body
#! /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;
}