#!/usr/bin/perl
#
#  Pinger en maskin. Sender mail til en angitt adresse hvis den ikke
#  svarer. Mailer til samme adresse når maskinen begyner å svare på ping
#  igjen.
#  Ment som en cron-jobb.
#					arne.vonheim@hiof.no, mai/98
#


$HOST_TO_CHECK = "almashriq.hiof.no";
$MAIL_TO = "almashriq\@hiof.no";


# Denne filen flagger om alarmen allerede har gått.
$ALARM_FILE = "/var/tmp/ping.alarm";

#########################################################################

$hostname = `hostname`;
$footer = "[Denne mailen ble generert av cron-jobben $0 på $hostname]";

# Ping den angitte maskinen (almashriq..?)
$ping = `ping -c 1 $HOST_TO_CHECK`;

# Er alarmen gått?
if( not -f $ALARM_FILE ) {
	# Nei, alarmen har ikke gått. Altså mailer vi hvis maskinen er NEDE.
	if( not $ping =~ /bytes from/ ) {
		#Maskinene er nede - alarmer
		open MAIL, "|mail -s \"$HOST_TO_CHECK nede!\" $MAIL_TO";
		print MAIL "$HOST_TO_CHECK svarer ikke på ping!\n";
		print MAIL "\n";
		print MAIL "Du vil få mail når den kommer opp igjen.\n";
		print MAIL "\n";
		print MAIL "$footer";
        	close MAIL;
		`touch $ALARM_FILE`;
	}
}
else {	
	# Ja, altså sender vi mail hvis, maskinen er OPPE igjen
	if( $ping =~ /bytes from/ ) {
		#Maskinen er oppe igjen - spre det glade budskap
		open MAIL, "|mail -s \"$HOST_TO_CHECK oppe!\" $MAIL_TO";
	        print MAIL "$HOST_TO_CHECK svarer på ping igjen.\n";
        	print MAIL "\n";
		print MAIL "$footer";
        	close MAIL;
		`rm $ALARM_FILE`;
	}
}






