123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #! /bin/bash
- NOTIFICATIONTYPE="UNKNOWN"
- HOSTNAME="unknown host"
- HOSTALIAS=""
- HOSTADDRESS=""
- HOSTSTATE="UNKNOWN"
- HOSTOUTPUT=""
- LONGHOSTOUTPUT=""
- HOSTPERFDATA=""
- LONGDATETIME=`date`
- CONTACTEMAIL=""
- GETOPT=$( getopt -o T:H:a:A:s:o:O:P:D:E: \
- --long type,hostname,alias,address,state,output,longoutput,perfdata,datetime,email \
- -n 'notify_host_by_email' -- "$@" )
- if test $? -ne 0; then
- echo 'Failed to parse command line options!' >&2
- exit 1
- fi
- eval set -- "$GETOPT"
- while true; do
- case "$1" in
- -T|--type)
- NOTIFICATIONTYPE="$2"
- shift 2
- ;;
- -H|--hostname)
- HOSTNAME="$2"
- shift 2
- ;;
- -a|--alias)
- HOSTALIAS="$2"
- shift 2
- ;;
- -A|--address)
- HOSTADDRESS="$2"
- shift 2
- ;;
- -s|--state)
- HOSTSTATE="$2"
- shift 2
- ;;
- -o|--output)
- HOSTOUTPUT="$2"
- shift 2
- ;;
- -O|--longoutput)
- LONGHOSTOUTPUT="$2"
- shift 2
- ;;
- -P|--perfdata)
- HOSTPERFDATA="$2"
- shift 2
- ;;
- -D|--datetime)
- LONGDATETIME="$2"
- shift 2
- ;;
- -E|--email)
- CONTACTEMAIL="$2"
- shift 2
- ;;
- --)
- shift
- break
- ;;
- esac
- done
- if test -z "$CONTACTEMAIL"; then
- echo 'Missing contact email!' >&2
- exit 1
- fi
- EMAIL=$( mktemp -t )
- trap "rm -f $EMAIL" EXIT
- function email_append() {
- /usr/bin/printf "%b" "$@" "\n" >> $EMAIL
- }
- cat <<EOF > $EMAIL
- ***** Nagios *****
- Notification Type: $NOTIFICATIONTYPE
- Host: $HOSTNAME ($HOSTALIAS)
- EOF
- if test -n "$HOSTADDRESS"; then
- email_append "Address: $HOSTADDRESS"
- fi
- email_append "State: $HOSTSTATE"
- if test -n "$HOSTOUTPUT"; then
- email_append "Info: $HOSTOUTPUT"
- fi
- email_append ""
- email_append "Date/Time: $LONGDATETIME"
- if test -n "$LONGHOSTOUTPUT"; then
- email_append ""
- email_append "Additional Info:"
- email_append ""
- email_append "$LONGHOSTOUTPUT"
- fi
- if test -n "$HOSTPERFDATA"; then
- email_append ""
- email_append "Performance Data:"
- email_append ""
- email_append "$HOSTPERFDATA"
- fi
- cat $EMAIL | /usr/bin/mail -s "** $NOTIFICATIONTYPE Host Alert: $HOSTNAME is $HOSTSTATE **" $CONTACTEMAIL
|