initial commit
This commit is contained in:
109
check_hddtemp.sh
Executable file
109
check_hddtemp.sh
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# USAGE:
|
||||
# ./check_hddtemp.sh <device> <warn> <crit>
|
||||
# Nagios script to get the temperatue of HDD from hddtemp
|
||||
#
|
||||
# You may have to let nagios run this script as root
|
||||
# This is how the sudoers file looks in my debian system:
|
||||
# nagios ALL=(root) NOPASSWD:/usr/lib/nagios/plugins/check_hddtemp.sh
|
||||
#
|
||||
# Version 1.0
|
||||
|
||||
OK=0
|
||||
WARNING=1
|
||||
CRITICAL=2
|
||||
UNKNOWN=3
|
||||
|
||||
function usage() {
|
||||
echo "Usage: ./check_hddtemp.sh <device> <warn> <crit>"
|
||||
}
|
||||
|
||||
function check_root() {
|
||||
# make sure script is running as root
|
||||
if [ `whoami` != root ]; then
|
||||
echo "UNKNOWN: please make sure script is running as root"
|
||||
exit $UNKNOWN
|
||||
fi
|
||||
}
|
||||
|
||||
function check_arg() {
|
||||
# make sure you supplied all 3 arguments
|
||||
if [ $# -ne 3 ]; then
|
||||
usage
|
||||
exit $OK
|
||||
fi
|
||||
}
|
||||
|
||||
function check_device() {
|
||||
# make sure device is a special block
|
||||
if [ ! -b $DEVICE ];then
|
||||
echo "UNKNOWN: $DEVICE is not a block special file"
|
||||
exit $UNKNOWN
|
||||
fi
|
||||
}
|
||||
|
||||
function check_warn_vs_crit() {
|
||||
# make sure CRIT is larger than WARN
|
||||
if [ $WARN -ge $CRIT ];then
|
||||
echo "UNKNOWN: WARN value may not be greater than or equal the CRIT value"
|
||||
exit $UNKNOWN
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function init() {
|
||||
check_root
|
||||
check_arg $*
|
||||
check_device
|
||||
check_warn_vs_crit
|
||||
}
|
||||
|
||||
function get_hddtemp() {
|
||||
# gets temperature and stores it in $HEAT
|
||||
# and make sure we get a numeric output
|
||||
if [ -x $HDDTEMP ];then
|
||||
HEAT=`$HDDTEMP $DEVICE -n 2>/dev/null`
|
||||
case "$HEAT" in
|
||||
[0-9]* )
|
||||
echo "do nothing" > /dev/null
|
||||
;;
|
||||
* )
|
||||
echo "OK: Could not get temperature from: $DEVICE"
|
||||
exit $OK
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "UNKNOWN: cannot execute $HDDTEMP"
|
||||
exit $UNKNOWN
|
||||
fi
|
||||
}
|
||||
|
||||
function check_heat() {
|
||||
# checks temperature and replies according to $CRIT and $WARN
|
||||
if [ $HEAT -lt $WARN ];then
|
||||
echo "OK: Temperature is below warn treshold ($DEVICE is $HEAT)"
|
||||
exit $OK
|
||||
elif [ $HEAT -lt $CRIT ];then
|
||||
echo "WARNING: Temperature is above warn treshold ($DEVICE is $HEAT)"
|
||||
exit $WARNING
|
||||
elif [ $HEAT -ge $CRIT ];then
|
||||
echo "CRITICAL: Temperature is above crit treshold ($DEVICE is $HEAT)"
|
||||
exit $CRITICAL
|
||||
else
|
||||
echo "UNKNOWN: This error message should never occur, if it does happen anyway, get a new cup of coffee and fix the code :)"
|
||||
exit $UNKNOWN
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# -- Main -- #
|
||||
|
||||
HDDTEMP=/usr/sbin/hddtemp
|
||||
DEVICE=$1
|
||||
WARN=$2
|
||||
CRIT=$3
|
||||
|
||||
init $*
|
||||
get_hddtemp
|
||||
check_heat
|
Reference in New Issue
Block a user