Content-Location: $URLPATH/images/enabled.gif
Content-Disposition: inline
$UUIMGENABLED"
# Initialize variables
FLAPPING="NO"
FLAPPINGCLASS="notflapping"
case $NAGIOS_NOTIFICATIONTYPE
in
PROBLEM) BKCLR="F83838" ;
case $NAGIOS_SERVICESTATE
in
WARNING) BKCLR="FFFF00" ;;
UNKNOWN) BKCLR="FF9900" ;;
esac ;;
RECOVERY) BKCLR="33FF00" ;
MIMEGRAPHICACK="" ;;
ACKNOWLEDGEMENT) BKCLR="0099FF" ;
R_SUBJECT="has been acknowledged by" ;
STATUSACK="(Has been acknowledged) " ;
MIMEGRAPHICACK="" ;;
FLAPPINGSTART) BKCLR="F83838" ;
R_SUBJECT="has started flapping" ;
FLAPPING="YES" ;
FLAPPINGCLASS="flapping" ;;
FLAPPINGSTOP) BKCLR="33FF00" ;
R_SUBJECT="is no longer flapping" ;
MIMEGRAPHICACK="" ;;
FLAPPINGDISABLED) BKCLR="0099FF" ;
R_SUBJECT="was flapping and had flapping notifications disabled";
FLAPPING="DISABLED" ;
FLAPPINGCLASS="flapping" ;
MIMEGRAPHICACK="" ;;
DOWNTIMESTART) BKCLR="0099FF" ;
R_SUBJECT="has entered scheduled downtime" ;
MIMEGRAPHICACK="" ;;
DOWNTIMEEND) BKCLR="0099FF" ;
R_SUBJECT="has exited scheduled downtime" ;
MIMEGRAPHICACK="" ;;
DOWNTIMECANCELLED) BKCLR="0099FF" ;
R_SUBJECT="had scheduled downtime cancelled" ;
MIMEGRAPHICACK="" ;;
TEST) BKCLR="FF66FF" ;
MIMEGRAPHICACK="" ;;
*) BKCLR="FF66FF" ;;
esac
# Host message prep
if [[ $1 == 'host' ]] ;
then {
# ---Section only used for alternative text message---
LASTHOSTDOWNTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTHOSTDOWN seconds"`
LASTHOSTUPTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTHOSTUP seconds"`
LASTHOSTUNREACHABLETIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTHOSTUNREACHABLE seconds"`
if [[ $LASTHOSTDOWNTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTHOSTDOWNTIME="never" ; fi
if [[ $LASTHOSTUPTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTHOSTUPTIME="never" ; fi
if [[ $LASTHOSTUNREACHABLETIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTHOSTUNREACHABLETIME="never" ; fi
case $NAGIOS_HOSTSTATE
in
UP) R_TIMES="Last time this host was down: $LASTHOSTDOWNTIME
Last time this host was unreachable: $LASTHOSTUNREACHABLETIME" ;;
DOWN | UNREACHABLE) R_TIMES="Last time this host was up: $LASTHOSTUPTIME" ;;
*) R_TIMES="Error: Unknown host state" ;;
esac
# ---END SECTION---
# Catch for Nagios 2.x variable difference
if [[ $NAGIOS_HOSTNOTIFICATIONNUMBER == "" && $NAGIOS_NOTIFICATIONNUMBER != "" ]] ;
then {
NAGIOS_HOSTNOTIFICATIONNUMBER=$NAGIOS_NOTIFICATIONNUMBER
};
fi
if [[ $R_SUBJECT == "" ]] ;
then {
R_SUBJECT="is $NAGIOS_HOSTSTATE ($NAGIOS_HOSTNOTIFICATIONNUMBER)"
};
fi
if [[ $NAGIOS_NOTIFICATIONTYPE == "ACKNOWLEDGEMENT" ]] ;
then {
R_SUBJECT="$R_SUBJECT $NAGIOS_HOSTACKAUTHOR"
R_ACKADD=""
};
elif [[ $NAGIOS_NOTIFICATIONTYPE == "PROBLEM" || $NAGIOS_NOTIFICATIONTYPE == "FLAPPINGSTART" ]] ;
then {
R_ACKCOMMAND="
|
Acknowledge this host problem |
"
};
fi
R_SUBJECT="Nagios Host Alert - $NAGIOS_HOSTNAME $R_SUBJECT"
R_NUMBER=$NAGIOS_HOSTNOTIFICATIONNUMBER
R_DESCRIPTION=$NAGIOS_HOSTALIAS
R_NOTES=$NAGIOS_HOSTNOTES
R_STATE=$NAGIOS_HOSTSTATE
R_OUTPUT=$NAGIOS_HOSTOUTPUT
R_ATTEMPT=$NAGIOS_HOSTATTEMPT
R_PERFDATA=$NAGIOS_HOSTPERFDATA
R_DURATION=$NAGIOS_HOSTDURATION
R_LATENCY=$NAGIOS_HOSTLATENCY
R_EXECUTION=$NAGIOS_HOSTEXECUTIONTIME
R_PERCENT=$NAGIOS_HOSTPERCENTCHANGE
R_LASTCHECK=`date --date="1970-01-01 UTC $NAGIOS_LASTHOSTCHECK seconds" "$DATEFORMAT"`
R_LASTSTATECHANGE=`date --date="1970-01-01 UTC $NAGIOS_LASTHOSTSTATECHANGE seconds" "$DATEFORMAT"`
R_COMMANDTAIL="&host=$NAGIOS_HOSTNAME"
R_COMMANDADD1="
|
Locate host on map |
"
R_COMMANDADD2="48"
R_COMMANDADD3="96"
R_COMMANDADD4="25"
R_COMMANDADD5="10"
R_COMMANDADD6="55"
R_COMMANDADD7="
|
Enable notifications for all services on this host |
|
Schedule a check of all services on this host |
|
Disable checks of all services on this host |
|
Enable checks of all services on this host |
"
R_COMMANDADD8="58"
R_COMMANDADD9="1"
};
# Service message prep
elif [[ $1 == 'service' ]] ;
then {
# ---Section only used for alterative text message---
LASTSERVICECRITICALTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTSERVICECRITICAL seconds"`
LASTSERVICEWARNINGTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTSERVICEWARNING seconds"`
LASTSERVICEOKTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTSERVICEOK seconds"`
LASTSERVICEUNKNOWNTIME=`date --universal --date="1970-01-01 UTC $NAGIOS_LASTSERVICEUNKNOWN seconds"`
if [[ $LASTSERVICECRITICALTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTSERVICECRITICALTIME="never" ; fi
if [[ $LASTSERVICEWARNINGTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTSERVICEWARNINGTIME="never" ; fi
if [[ $LASTSERVICEOKTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTSERVICEOKTIME="never" ; fi
if [[ $LASTSERVICEUNKNOWNTIME == "Thu Jan 1 00:00:00 UTC 1970" ]] ; then LASTSERVICEUNKNOWNTIME="never" ; fi
case $NAGIOS_SERVICESTATE
in
OK) R_TIMES="Last time this service was critical: $LASTSERVICECRITICALTIME
Last time this service was warning: $LASTSERVICEWARNINGTIME
Last time this service was unknown: $LASTSERVICEUNKNOWNTIME" ;;
WARNING | UNKNOWN | CRITICAL) R_TIMES="Last time this service was ok: $LASTSERVICEOKTIME" ;;
*) R_TIMES="Error: Unknown service state" ;;
esac
# ---END SECTION---
# Catch for Nagios 2.x variable difference
if [[ $NAGIOS_SERVICENOTIFICATIONNUMBER == "" && $NAGIOS_NOTIFICATIONNUMBER != "" ]] ;
then {
NAGIOS_SERVICENOTIFICATIONNUMBER=$NAGIOS_NOTIFICATIONNUMBER
};
fi
if [[ $R_SUBJECT == "" ]] ;
then {
R_SUBJECT="is $NAGIOS_SERVICESTATE ($NAGIOS_SERVICENOTIFICATIONNUMBER)"
};
fi
if [[ $NAGIOS_NOTIFICATIONTYPE == "ACKNOWLEDGEMENT" ]] ;
then {
R_SUBJECT="$R_SUBJECT $NAGIOS_SERVICEACKAUTHOR"
R_ACKADD=""
};
elif [[ $NAGIOS_NOTIFICATIONTYPE == "PROBLEM" || $NAGIOS_NOTIFICATIONTYPE == "FLAPPINGSTART" ]] ;
then {
R_ACKCOMMAND="
|
Acknowledge this service problem |
"
};
fi
R_SUBJECT="Nagios Service Alert - $NAGIOS_SERVICEDESC on $NAGIOS_HOSTNAME $R_SUBJECT"
R_NUMBER=$NAGIOS_SERVICENOTIFICATIONNUMBER
R_DESCRIPTION=$NAGIOS_SERVICEDESC
R_STATE=$NAGIOS_SERVICESTATE
R_OUTPUT=$NAGIOS_SERVICEOUTPUT
R_ATTEMPT=$NAGIOS_SERVICEATTEMPT
R_LINKBOX_ADD="View Information For This Host
"
R_LINKBOXLINK_ADD="&service=$NAGIOS_SERVICEDESC"
R_TITLE_ADD="On Host
$NAGIOS_HOSTALIAS
"
R_NOTES=$NAGIOS_SERVICENOTES
R_PERFDATA=$NAGIOS_SERVICEPERFDATA
R_DURATION=$NAGIOS_SERVICEDURATION
R_LATENCY=$NAGIOS_SERVICELATENCY
R_EXECUTION=$NAGIOS_SERVICEEXECUTIONTIME
R_PERCENT=$NAGIOS_SERVICEPERCENTCHANGE
R_LASTCHECK=`date --date="1970-01-01 UTC $NAGIOS_LASTSERVICECHECK seconds" "$DATEFORMAT"`
R_LASTSTATECHANGE=`date --date="1970-01-01 UTC $NAGIOS_LASTSERVICESTATECHANGE seconds" "$DATEFORMAT"`
R_COMMANDTAIL="&host=$NAGIOS_HOSTNAME&service=$NAGIOS_SERVICEDESC"
R_COMMANDADD2="6"
R_COMMANDADD3="7"
R_COMMANDADD4="23"
R_COMMANDADD5="9"
R_COMMANDADD6="56"
R_COMMANDADD8="60"
R_COMMANDADD9="3"
MIMEGRAPHIC1=""
MIMEGRAPHIC2=""
};
# Catch for bad argument
else {
echo "ERROR: Invalid argument. Must be 'host' or 'service'"
exit -1
};
fi
# Included for browser compatability problems with CSS text-transform: capitalize
NAGIOS_NOTIFICATIONTYPE=`echo $NAGIOS_NOTIFICATIONTYPE | python -c "print raw_input().capitalize()"`
set -- `echo $1 | python -c "print raw_input().capitalize()"`
# Message generation
# NOTE: All of the "R_" variables change when either 'host' or 'service' is selected
MSG=`echo "From: $REPLYADDRESS
Reply-To: $REPLYADDRESS
To: $NAGIOS_CONTACTALIAS <$NAGIOS_CONTACTEMAIL>
Subject: $R_SUBJECT
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=$MIMEBOUNDARY1
--$MIMEBOUNDARY1
Content-Type: text/plain; charset=us-ascii
$R_DESCRIPTION ($NAGIOS_HOSTNAME @ $NAGIOS_HOSTADDRESS) is $R_STATE,
Nagios reports: $R_OUTPUT,
This $1 has been $R_STATE for $R_ATTEMPT consecutive attempts,
$R_TIMES
--$MIMEBOUNDARY1
Content-Type: multipart/related; boundary=$MIMEBOUNDARY2; type=text/html
--$MIMEBOUNDARY2
Content-Type: text/html; charset=us-ascii
Content-Description: HTML message
Content-ID:
Nagios Notification
|
Nagios $NAGIOS_NOTIFICATIONTYPE Notification
|
|
|
$1
$R_DESCRIPTION
$R_TITLE_ADD
$R_NOTES
|
|
$1 State Information
Current Status: |
$R_STATE $STATUSACK
(for $R_DURATION)
|
Status Information: |
$R_OUTPUT |
Check attempts: |
$R_ATTEMPT |
Last Check Time: |
$R_LASTCHECK |
Check Latency / Duration: |
$R_LATENCY / $R_EXECUTION seconds |
Last State Change: |
$R_LASTSTATECHANGE |
Current Notification Number: |
$R_NUMBER |
Is This $1 Flapping? |
$FLAPPING
($R_PERCENT% state change)
|
|
|
|
|
All information is the property of $REPLYNAME
and should be treated as confidential
--$MIMEBOUNDARY2
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Description: Inline graphic
Content-ID:
Content-Location: $URLPATH/images/disabled.gif
Content-Disposition: inline
$UUIMGDISABLED
--$MIMEBOUNDARY2
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Description: Inline graphic
Content-ID:
Content-Location: $URLPATH/images/delay.gif
Content-Disposition: inline
$UUIMGDELAY
--$MIMEBOUNDARY2
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Description: Inline graphic
Content-ID:
Content-Location: $URLPATH/images/downtime.gif
Content-Disposition: inline
$UUIMGDOWNTIME
--$MIMEBOUNDARY2
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Description: Inline graphic
Content-ID:
Content-Location: $URLPATH/images/comment.gif
Content-Disposition: inline
$UUIMGCOMMENT
$MIMEGRAPHIC1
$MIMEGRAPHIC2
$MIMEGRAPHICACK
--$MIMEBOUNDARY2--
--$MIMEBOUNDARY1--"`
[ "$MSG" ] || {
echo "Error generating e-mail message."
exit -1
}
# Send the damn e-mail already!
$PRINTF "%b" "$MSG" | $MAILER $MAILOPTS
exit