#!/bin/bash # Festlegen der grundvariablen now=`date +%s` commandfile='/usr/local/nagios/var/rw/nagios.cmd' sqlusername=mailmonitor sqldatabase=opsview subject="" comment="" hostname="" service="" fromAddr="" user="" # Abarbeiten der StdIn Pipe while read stdinput ; do # Returnpath der Mail auswerten und über E-Mailadresse UserID aus Opsview Datenbank ermitteln if [ $(echo $stdinput | grep -c "Return-Path:" ) -gt 0 ]; then # Adresse aus Mailheader ermitteln fromAddr=$( echo $stdinput | grep "Return-Path:" | head -1 | cut -d" " -f 2 | sed 's///' ) # Opsview UserID aus Datenbank ermitteln user=$( mysql -t -N -u $sqlusername $sqldatabase -e "select username from contacts where upper(email) = upper('$fromAddr');" | grep -v "+" | cut -d" " -f 2 ) # Wenn der zurückgegebene User eine Länge von 0 Zeichen hat, dann Abbruch. if [ ${#user} -eq 0 ]; then exit 1; fi fi # Prüfen ob Mailsubject ein Acknowledge enthält if [ $(echo $stdinput | grep "Subject:" | grep -c "Acknowledge") -gt 0 ] && [ ${#subject} -eq 0 ]; then subject=$( echo $stdinput | grep "Subject:" | grep "Acknowledge" ) if [ $(echo $subject | grep -c "-" ) -gt 0 ]; then comment=$( echo $subject | cut -d"-" -f 2 ) else comment="Acknowledged, but no comment" fi fi # Ermitteln des Hostname if [ $( echo $stdinput | grep -c "Host:" ) -gt 0 ] && [ ${#hostname} -eq 0 ]; then hostname=$( echo $stdinput | grep "Host:" | cut -d":" -f 2 | sed 's/ //' ) fi # Ermitteln des Servicenamens if [ $( echo $stdinput | grep -c "Service:" ) -gt 0 ] && [ ${#service} -eq 0 ]; then service=$( echo $stdinput | grep "Service:" | cut -d":" -f 2 | sed 's/ //' ) fi done # Wenn Servicename ermittelt werden kann, Service Acknowledge durchführen. if [ ${#service} -gt 1 ]; then # Serviceacknowledge senden ackType="Service Acknowledge" /usr/bin/printf "[%lu] ACKNOWLEDGE_SVC_PROBLEM;$hostname;$service;1;1;1;$user;$comment\n" $now > $commandfile else # Hostacknowledge senden ackType="Host Acknowledge" /usr/bin/printf "[%lu] ACKNOWLEDGE_HOST_PROBLEM;$hostname;1;1;1;$user;$comment\n" $now > $commandfile fi # Ausgabe der Infos für Debuggingzwecke echo "-----------------------------------------------" echo "From: $fromAddr" echo "Username: $user" echo "Subject: $subject" echo "Hostname: $hostname" echo "Service: $service" echo "Comment: $comment" echo "Type: $ackType" echo "-----------------------------------------------" exit 0