From a466af6acfde9bcc4b17eb6f0a130adc80e09a94 Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Mon, 27 Mar 2006 07:26:41 +0000 Subject: [PATCH] Added check_hddtemp --- Makefile | 2 +- check_hddtemp | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100755 check_hddtemp diff --git a/Makefile b/Makefile index 099deb6..b597b6e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ DESTDIR = /usr/local/nagios/libexec/ -SCRIPTS = check_cups check_glsa check_saned check_lpd +SCRIPTS = check_cups check_glsa check_saned check_lpd check_hddtemp all:; diff --git a/check_hddtemp b/check_hddtemp new file mode 100755 index 0000000..0e52c53 --- /dev/null +++ b/check_hddtemp @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# +# Check the hddtemp daemon on a remote host +# +# Usage: check_hddtemp host drive warn crit +# +# This check script is maintained in a Subversion repository at +# http://lsvn.lysator.liu.se/svnroot/nagios-plugins. Contact +# <ceder@lysator.liu.se> for commit access. + +import socket +import sys +import os + +def connect(host): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + s.connect((host, 7634)) + except socket.error, err: + print "CRITICAL - ", err.args[1], "| queue=0" + sys.exit(2) + return s + +def check_hddtemp(host, drive, warn, crit): + s = connect(host) + res = '' + while True: + tmp = s.recv(65535) + if len(tmp) == 0: + break + res += tmp + s.close() + for drive_desc in res.split('||'): + drive_info = drive_desc.split('|') + drv_name = drive_info[1] + drv_type = drive_info[2] + drv_temp = int(drive_info[3]) + drv_unit = drive_info[4] # C or F + if drv_name != drive: + continue + if drv_temp >= crit: + print "CRITICAL -", drv_temp, "C | temp=%d" % drv_temp + sys.exit(2) + elif drv_temp >= warn: + print "WARNING -", drv_temp, "C | temp=%d" % drv_temp + sys.exit(0) + else: + print "OK -", drv_temp, "C | temp=%d" % drv_temp + sys.exit(0) + print "UNKNOWN -", drive, "not found" + sys.exit(3) + +def usage(): + sys.stderr.write("usage: check_hddtemp host drive warn crit\n") + sys.exit(64) + +if __name__ == '__main__': + if len(sys.argv) == 5: + host = sys.argv[1] + drive = sys.argv[2] + warn = int(sys.argv[3]) + crit = int(sys.argv[4]) + else: + usage() + + check_hddtemp(host, drive, warn, crit) -- GitLab