diff --git a/check_rasp_temp b/check_rasp_temp new file mode 100644 index 0000000..3fa6422 --- /dev/null +++ b/check_rasp_temp @@ -0,0 +1,94 @@ +#!/bin/bash +# Adapted from check_nagios_latency + +VCGENCMD="/opt/vc/bin/vcgencmd" + +# Prints usage information +usage() { + + if [ -n "$1" ] ; then + echo "Error: $1" 1>&2 + fi + + echo "" + echo "Usage: check_rasp_temp [-h?] -w warning -c critical" + echo "" + echo " -w warning threshold" + echo " -c critical threshold" + echo " -h, -? this help message" + echo "" + + exit 3 +} + + +# Checks if a given program is available and executable +check_prog() { + + if [ -z "$PROG" ] ; then + PROG=`which $1` + fi + + if [ -z "$PROG" ] ; then + echo "TEMPERATURE UNKNOWN - cannot find $1" + exit 3 + fi + + PROG="" +} + + +# Main +# check progs +check_prog awk +check_prog bc + + +# process command line options +while getopts "h?c:w:" opt; do + case $opt in + c ) CRITICAL=$OPTARG; ;; + h | \? ) usage ; exit 3; ;; + w ) WARNING=$OPTARG; ;; + esac +done +shift $(($OPTIND - 1)) + + +# Check options +if [ -z "${WARNING}" ] ; then + usage "No warning threshold specified" +fi +if [ -z "${CRITICAL}" ] ; then + usage "No critical threshold specified" +fi + +# Check number formats +if ! echo $WARNING | grep -qE '^[0-9]+(\.[0-9]+)?$' ; then + echo "TEMPERATURE UNKOWN - Wrong number: $WARNING" + exit 3 +fi +if ! echo $CRITICAL | grep -qE '^[0-9]+(\.[0-9]+)?$' ; then + echo "TEMPERATURE UNKOWN - Wrong number: $CRITICAL" + exit 3 +fi + + +# Perform the checks +TEMP=`$VCGENCMD measure_temp | awk -F"=" '{print $2}' | awk -F"'" '{print $1}'` +PERF="temp=${TEMP};${WARNING};${CRITICAL};;" + +COMPARISON=`echo "if($TEMP>=$CRITICAL) 1 else 0;" | bc` +if [ $COMPARISON -eq 1 ] ; then + echo "TEMPERATURE CRITICAL: $TEMP | $PERF" + exit 2 +fi + +COMPARISON=`echo "if($TEMP>=$WARNING) 1 else 0;" | bc` +if [ $COMPARISON -eq 1 ] ; then + echo "TEMPERATURE WARNING: $TEMP | $PERF" + exit 1 +fi + +echo "TEMPERATURE OK: $TEMP | $PERF" +exit 0;