|
@@ -0,0 +1,161 @@
|
|
|
+#! /bin/bash
|
|
|
+#
|
|
|
+# Nagios service notification script.
|
|
|
+#
|
|
|
+# Copyright (C) 2012 Sebastian 'tokkee' Harl <sh@teamix.net>
|
|
|
+# and teamix GmbH, Nuernberg, Germany
|
|
|
+#
|
|
|
+# This file is part of "teamix Monitoring Plugins"
|
|
|
+# URL: http://oss.teamix.org/projects/monitoringplugins/
|
|
|
+#
|
|
|
+# This file is free software: you can redistribute it and/or modify
|
|
|
+# it under the terms of the GNU General Public License as published
|
|
|
+# by the Free Software Foundation, either version 2 of the License,
|
|
|
+# or (at your option) any later version.
|
|
|
+#
|
|
|
+# This file is distributed in the hope that it will be useful, but
|
|
|
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+# GNU General Public License for more details.
|
|
|
+#
|
|
|
+# You should have received a copy of the GNU General Public License
|
|
|
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
|
|
|
+
|
|
|
+#
|
|
|
+# Sample command line:
|
|
|
+# notify_service_by_email.sh -T '$NOTIFICATIONTYPE$' -H '$HOSTNAME$' \
|
|
|
+# -a '$HOSTALIAS$' -A '$HOSTADDRESS$' \
|
|
|
+# -S '$SERVICEDESC$' -s '$SERVICESTATE$' \
|
|
|
+# -o '$SERVICEOUTPUT$' -O '$LONGSERVICEOUTPUT$' \
|
|
|
+# -P '$SERVICEPERFDATA$' -D '$LONGDATETIME$' \
|
|
|
+# -E '$CONTACTEMAIL$'
|
|
|
+#
|
|
|
+
|
|
|
+NOTIFICATIONTYPE="UNKNOWN"
|
|
|
+
|
|
|
+HOSTNAME="unknown host"
|
|
|
+HOSTALIAS=""
|
|
|
+HOSTADDRESS=""
|
|
|
+SERVICEDESC="unknown service"
|
|
|
+SERVICESTATE="UNKNOWN"
|
|
|
+SERVICEOUTPUT=""
|
|
|
+LONGSERVICEOUTPUT=""
|
|
|
+SERVICEPERFDATA=""
|
|
|
+
|
|
|
+LONGDATETIME=`date`
|
|
|
+
|
|
|
+CONTACTEMAIL=""
|
|
|
+
|
|
|
+GETOPT=$( getopt -o T:H:a:A:S:s:o:O:P:D:E: \
|
|
|
+ --long type,hostname,alias,address,service,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|--service)
|
|
|
+ SERVICEDESC="$2"
|
|
|
+ shift 2
|
|
|
+ ;;
|
|
|
+ -s|--state)
|
|
|
+ SERVICESTATE="$2"
|
|
|
+ shift 2
|
|
|
+ ;;
|
|
|
+ -o|--output)
|
|
|
+ SERVICEOUTPUT="$2"
|
|
|
+ shift 2
|
|
|
+ ;;
|
|
|
+ -O|--longoutput)
|
|
|
+ LONGSERVICEOUTPUT="$2"
|
|
|
+ shift 2
|
|
|
+ ;;
|
|
|
+ -P|--perfdata)
|
|
|
+ SERVICEPERFDATA="$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
|
|
|
+
|
|
|
+Service: $SERVICEDESC
|
|
|
+Host: $HOSTNAME ($HOSTALIAS)
|
|
|
+EOF
|
|
|
+
|
|
|
+if test -n "$HOSTADDRESS"; then
|
|
|
+ email_append "Address: $HOSTADDRESS"
|
|
|
+fi
|
|
|
+
|
|
|
+email_append "State: $SERVICESTATE"
|
|
|
+if test -n "$SERVICEOUTPUT"; then
|
|
|
+ email_append "Info: $SERVICEOUTPUT"
|
|
|
+fi
|
|
|
+
|
|
|
+email_append ""
|
|
|
+email_append "Date/Time: $LONGDATETIME"
|
|
|
+
|
|
|
+if test -n "$LONGSERVICEOUTPUT"; then
|
|
|
+ email_append ""
|
|
|
+ email_append "Additional Info:"
|
|
|
+ email_append ""
|
|
|
+ email_append "$LONGSERVICEOUTPUT"
|
|
|
+fi
|
|
|
+
|
|
|
+if test -n "$SERVICEPERFDATA"; then
|
|
|
+ email_append ""
|
|
|
+ email_append "Performance Data:"
|
|
|
+ email_append ""
|
|
|
+ email_append "$SERVICEPERFDATA"
|
|
|
+fi
|
|
|
+
|
|
|
+cat $EMAIL | /usr/bin/mail -s "** $NOTIFICATIONTYPE Service Alert: $HOSTNAME/$SERVICEDESC is $SERVICESTATE **" $CONTACTEMAIL
|
|
|
+
|