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