#!/bin/sh
#
# crm_alarm [-n] alarm_level alarm_msg
#	alarm_level: the smaller the number, the higher the priority
#	-n: no pager, default is to page	
#
PATH=/bin:/usr/bin:/home/ctu/bin

host=$(hostname)
reply_to=report@apol.com.tw
mail_list="duke@mt.com.tw"
pager="ctu@ctutech.com"
pager=


# default mail list include pager
mail_to="$mail_list $pager"


# log the alarm 
log_alarm() {
	echo $now_date $now $alarm_level "$alarm_msg" >> $alarm_log
}


# mail the alarm
mail_alarm() {
	/usr/sbin/sendmail -r $reply_to -t <<!
To: $mail_to
Subject: crm alarm $alarm_level

 $host: $alarm_msg
!
	echo $now $alarm_level "$alarm_msg" > $last_alarm_mailed
}

prog_name=$(basename $0)

# process -n flag
[ "$1" = "-n" ] && { shift; mail_to="$mail_list"; } ;
if [ "$#" != "2" ] 
then
	echo "usage: $prog_name [-n] alarm_level alarm_msg"
	echo "        -n: no pager, default is to use pager"
	exit 1
fi


alarm_log=$HOME/logs/alarm.log

# parse the last alarm mailed
last_alarm_mailed=$HOME/logs/last_alarm_mailed
if [ -f "$last_alarm_mailed" ]
then
  read last_alarm_date last_alarm_level last_alarm_desc < $last_alarm_mailed
fi

[ "$last_alarm_date" == "" ] && last_alarm_date=0
[ "$last_alarm_level" == "" ] && last_alarm_level=100


now_date=$(date)
now=$(date +"%s")
alarm_level=$1
alarm_msg=$2

log_alarm

# we don't send mail if we cannot ping internet
check_internet
[ "$?" != "0" ] && exit 0


# if the new alarm level is more critical, always mail alarm
if (( $alarm_level < $last_alarm_level ))
then
	mail_alarm
# else if it has been 60 minute since we mailed the last alarm, always mail it
elif (( ( $now - $last_alarm_date ) > 3600 ))
then
	mail_alarm	
fi



