Ping mit Perl

12 04 2007

Mein Server machte in der letzten Zeit öfters Probleme. Um diesen im Griff zu behalten benötigte ich ein Tool, das diesen im Auge behält. Habe mir dazu ein winziges Perl-Skript gebastelt, das eigentlich nicht mehr macht als alle viertel Stunde (Zeit ist im Parameter $wartezeit anpassbar) den Server anzupingen und den Status zurückzugeben. Kann man natürlich nach belieben erweitern, beispielsweise sich eine Mail schicken lassen wenn der Server tot ist.

Es ist zu beachten, dass nur root die Rechte besitzt, ICMP Nachrichten zu senden. Spielte für mich hier keine Rolle, man könnte aber auch das suid-Flag für ICMP entsprechend anpassen.

#!/usr/bin/perl -w

use strict;
use Net::Ping;

my $wartezeit = ‘900′; # Wartezeit in Sekunden
my $host = $ARGV[0];

die "\nSyntax: $0 www.domain.tld\n\n" if (!defined($host));

while (1 == 1){ # Gewollte Endlosschleife
	my $p = Net::Ping->new(‘icmp’);
	system(‘date’);
	if ($p->ping($host)){
		print "$host ist erreichbar!\n";
	} else {
		print "$host ist NICHT erreichbar!\n";
	}
	sleep($wartezeit);
}