#!/bin/bash
#
# Initialisierung
stty -F /dev/ttyUSB0 19200 min 0 -icanon -ixon brkint imaxbel
echo -en '\0001\0001\0000\0000' > /dev/ttyUSB0
#
# Endlosschleife
while true ; do
 LAMP=0
 RESULT=`echo "
   SELECT instance_id
   FROM nagios_hoststatus
   WHERE current_state <> 0
   AND problem_has_been_acknowledged = 0;"
   | mysql -u nagios -h db_host nagios | wc -l`
 if (( $RESULT > 0 )) ; then
   # Ein Host hat ein Problem -> Rotes Licht
   echo -en '\0003\0001\0004\0006' > /dev/ttyUSB0
   LAMP=1
   # Lampe ist gesetzt
 fi

 if [[ $LAMP = "0" ]] ; then
   RESULT=`echo "
     SELECT nagios_servicestatus.service_object_id
     FROM ((nagios_servicestatus
     INNER JOIN nagios_services
       ON nagios_servicestatus.service_object_id=nagios_services.service_object_id)
     INNER JOIN nagios_hosts
       ON nagios_services.host_object_id=nagios_hosts.host_object_id)
     INNER JOIN nagios_hoststatus
       ON nagios_hosts.host_id=nagios_hoststatus.hoststatus_id
     WHERE nagios_servicestatus.current_state > 1 AND
       nagios_servicestatus.problem_has_been_acknowledged=0 AND
       nagios_hoststatus.problem_has_been_acknowledged=0;"
     | mysql -u nagios -h db_host nagios | wc -l`
   if (( $RESULT > 0 )) ; then
     # Service ist kritisch -> Rote Lampe.
     echo -en '\0003\0001\0004\0006' > /dev/ttyUSB0
     LAMP=1
   fi
 fi

 if [[ $LAMP = "0" ]] ; then
   RESULT=`echo "
     SELECT nagios_servicestatus.service_object_id
     FROM ((nagios_servicestatus
     INNER JOIN nagios_services
       ON nagios_servicestatus.service_object_id=nagios_services.service_object_id)
     INNER JOIN nagios_hosts
       ON nagios_services.host_object_id=nagios_hosts.host_object_id)
     INNER JOIN nagios_hoststatus
       ON nagios_hosts.host_id=nagios_hoststatus.hoststatus_id
     WHERE nagios_servicestatus.current_state = 1 AND
       nagios_servicestatus.problem_has_been_acknowledged=0 AND
       nagios_hoststatus.problem_has_been_acknowledged=0;"
     | mysql -u nagios -h db_host nagios | wc -l`
   if (( $RESULT > 0 )) ; then
     # Service zeigt Warnung -> Gelbe Lampe.
     echo -en '\0003\0001\0002\0000' > /dev/ttyUSB0
     LAMP=1
   fi
 fi

 if [[ $LAMP = "0" ]] ; then
   # Keine Probleme -> GrĂ¼ne Lampe
   echo -en '\0003\0001\0001\0003' > /dev/ttyUSB0
 fi

 sleep 30
 LAMP=0
done