From a02420a9e57e3fe1472955de940c2e3d75bcb008 Mon Sep 17 00:00:00 2001 From: Jonny007-MKD Date: Sat, 3 Oct 2020 16:20:58 +0200 Subject: [PATCH] Added check_rpi_temp.sh --- check_rpi_temp.sh | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 check_rpi_temp.sh diff --git a/check_rpi_temp.sh b/check_rpi_temp.sh new file mode 100755 index 0000000..18c9b7e --- /dev/null +++ b/check_rpi_temp.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# Created by Jonny007-MKD 2020-10-03 + +echoerr() { echo "$@" 1>&2; } + +WARN=50 +CRIT=70 +FAHRENHEIT=false +DEBUG=false +while [[ $# -gt 0 ]]; do + case $1 in + -w|--warn|--warning) + case "$2" in + ''|*[!0-9]*) echoerr "Argument for \"$1\" has to be a number";; + esac + WARN=$2 + shift; shift + ;; + -c|--crit|--critical) + case "$2" in + ''|*[!0-9]*) echoerr "Argument for \"$1\" has to be a number";; + esac + CRIT=$2 + shift; shift + ;; + -f|--fahrenheit) + FAHRENHEIT=true + shift + ;; + -d|--debug) + DEBUG=true + shift + ;; + -?|--help) + echo "Check /proc/mdstat. Arguments:" + echo "--warning $WARN: Temperature above which the result is warning" + echo "--critical $CRIT: Temperature above which the result is critical" + echo "--fahrenheit: All temperatures in Fahrenheit (°F)" + exit 0 + ;; + esac + shift +done + +if [ $CRIT -le $WARN ]; then + echoerr "Critical threshold ($CRIT) has to be greater than Warning threshold ($WARN)" + exit 1 +fi + + +function log { + if $DEBUG; then + echo " > $@" + fi +} +NL=$'\n' + + +output=$(/opt/vc/bin/vcgencmd measure_temp) +result=$? +log vcgencmd: $result. $output +if [ $result -ne 0 ]; then + echoerr "vcgencmd returned $result" + exit $result +fi + +temp=${output/temp=/} +temp=${temp/\'C/} + +unit="°C" +if $FAHRENHEIT; then + temp=$(bc <<< "scale=1; ($temp * 1.8) + 32") + unit="°F" +fi + + + +c=$(bc <<< "$temp > $CRIT") +w=$(bc <<< "$temp > $WARN") +if [ $c -eq 1 ]; then + result="CRITICAL" +elif [ $w -eq 1 ]; then + result="WARNING" +else + result="OK" +fi +echo "$result | 'temperature'=$temp;$unit;$WARN;$CRIT;-40;85" + + +case $result in + OK) exit 0;; + WARNING) exit 1;; + CRITICAL) exit 2;; +esac +