Erreichbarkeit von Servern mittels Perl-Skript überwachen
Das folgende Perl-Skript überwacht die Erreichbarkeit von Servern mittels ping oder SSH-Login. Im Fehlerfall wird ein Administrator über die nicht Erreichbarkeit per E-Mail informiert. Um die Überprüfung per SSH zu ermöglichen, muss der Login auf dem Entfernten Server mittels Public-Key, d.h ohne Passwort möglich sein.
#!/usr/bin/perl
#
# config
#
$subject = "Server: Server Reachability-Test fails";
$mailfrom = "server\@domain.com";
$mailto = "admin\@domain.com";
# servername => command
%server = (
'internal Server' => 'ping -qc3 192.168.0.1 > /dev/null 2>&1',
'external Server' => 'ssh -q -o "BatchMode=yes" server.domain.com -p 22 -l remoteuser "exit" > /dev/null 2>&1'
);
#
# script
#
use FileHandle;
while( ($servername, $command) = each(%server) ){
@return = system($command);
if($? != 0) {
push(@warn, "$servername => $command => fails");
#print "$servername => $command => fails\n";
} else {
#print "$servername => $command => success\n";
}
}
if(@warn){
$mail = new FileHandle;
$mail->open("| /usr/sbin/sendmail -t") || die "Cannot open: $!";
$mail->print("From: $mailfrom\n");
$mail->print("To: $mailto\n");
$mail->print("Subject: $subject\n\n");
foreach (@warn) {
$mail->print($_, "\n");
}
$mail->close();
}
Beachten Sie, dass bei Ausführung des Skripts mittels Cronjob eventuell der Pfad zum ping und ssh Befehl angegeben werden muss. Sie können den Pfad mittels which <command> ermitteln.