check_rasp_temp/check_rasp_temp.sh

111 lines
2.2 KiB
Bash

#!/bin/bash
# Adapted from check_nagios_latency
# https://github.com/larsen0815/check_rasp_temp
# Prints usage information
usage() {
if [ -n "$1" ] ; then
echo "Error: $1" 1>&2
fi
echo ""
echo "Usage: check_rasp_temp [-hl?] -w warning -c critical"
echo ""
echo " -w warning threshold"
echo " -c critical threshold"
echo " -l check for low temperatures"
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_prog vcgencmd
check_prog awk
check_prog bc
# process command line options
while getopts "hl?c:w:" opt; do
case $opt in
c ) CRITICAL=$OPTARG; ;;
h | \? ) usage ; exit 3; ;;
w ) WARNING=$OPTARG; ;;
l ) LOW=true; ;;
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};;"
if [ "$LOW" == true ] ; then
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
else
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
fi
echo "TEMPERATURE OK: $TEMP | $PERF"
exit 0;