#!/bin/bash # Return Codes: # 0 - Ok! - Up # 1 - Warning - Flaky # 2 - Critical - Down # 3 - Unknown - Ummm... What happened?! print_usage() { echo "Usage: check_loxone_klima.sh [Raumkürzel] [Abweichung Warning] [Abweichung Critical]" echo "Beispiel: check_loxone_klima.sh AK 2 3" } function beenden { exit $1 } #Parameter prüfen if [ $# -ne 3 ]; then print_usage beenden 3 fi RAUMNAME=$1 WARNSCHWELLE=$2 CRITSCHWELLE=$3 TEMPIST=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Ist) if [ $? -ne 0 ] ; then echo "Fehler beim Abrufen der Temperatur" beenden 3 fi echo $TEMPIST | grep "Cannot GET" > /dev/null if [ $? -eq 0 ] ; then echo "NodeRED hat den Wert nicht gefunden" beenden 3 fi TEMPSOLL=$(curl -s http://nhi-00-sl-iobk:1880/Icinga_${RAUMNAME}_Temp_Soll) if [ $? -ne 0 ] ; then echo "Fehler beim Abrufen der Temperatur" beenden 3 fi echo $TEMPSOLL | grep "Cannot GET" > /dev/null if [ $? -eq 0 ] ; then echo "NodeRED hat den Wert nicht gefunden" beenden 3 fi #if [ $TEMPIST -eq $TEMPSOLL ] ; then if (( $(echo "$TEMPIST == $TEMPSOLL" | bc -l) )); then echo "Soll- und Ist-Temperatur von ${RAUMNAME} ist gleich | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=0" beenden 0 fi if (( $(echo "$TEMPIST < $TEMPSOLL" | bc -l) )); then TEMPDIFF=$(echo "$TEMPSOLL - $TEMPIST" | bc) else TEMPDIFF=$(echo "$TEMPIST - $TEMPSOLL" | bc) fi if (( $(echo "$TEMPDIFF < 1" | bc -l) )); then TEMPDIFFNULL="0${TEMPDIFF}" else TEMPDIFFNULL=${TEMPDIFF} fi if (( $(echo "$TEMPDIFF < 0" | bc -l) )); then echo "Fehler bei der Differenzberechnung" beenden 3 fi if (( $(echo "$TEMPDIFF > $CRITSCHWELLE" | bc -l) )); then echo "Critical: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" beenden 2 elif (( $(echo "$TEMPDIFF > $WARNSCHWELLE" | bc -l) )); then echo "Warning: Temperaturdifferenz von ${RAUMNAME} bei ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" beenden 1 else echo "OK: Raumtemperatur von ${RAUMNAME} ist im Sollbereich, Abweichung ${TEMPDIFFNULL}°C | temp_soll=${TEMPSOLL} temp_ist=${TEMPIST} temp_diff=${TEMPDIFFNULL}" beenden 0 fi beenden 0