Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1


Remember Me

Directory Tree


8 votes
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
Check disk status with smartmontools.
Use smartmontools ( to check disk health status and temperature.
Reviews (5)
I needed to run this as an unprivileged user, so I added a c wrapper that can use setuid root.

I also applied the patch below, fixed a few minor bugs and attempted to improve readability.

The result can be found here:
As disks with defective sectors are still reported as a healthy disk by Smart, i added checking the Smart IDs 5,196,197,198. An critical error will be reported if any > 0. I have not much clue about python but the patch is working:
bykohly, March 30, 2011
if temperature > criticalThreshold:
return (2, "CRITICAL: device temperature (%d) exceeds critical temperature threshold (%s)|temperature= %d;%s;%s;" % (temperature, criticalThreshold, temperature, warningThreshold, criticalThreshold))
elif temperature > warningThreshold:
return (1, "WARNING: device temperature (%d) exceeds warning temperature threshold (%s)|temperature= %d;%s;%s;" % (temperature, warningThreshold, temperature, warningThreshold, criticalThreshold))
return (0, "OK: device is functional and stable (temperature: %d)|temperature= %d;%s;%s;" % (temperature, temperature, warningThreshold, criticalThreshold))
byatrox, March 15, 2011
1 of 1 people found this review helpful
To get rid of the deprecation warnings:

--- 2011-03-15 15:28:50.000000000 +0200
+++ 2011-03-15 15:40:48.000000000 +0200
@@ -28,6 +28,7 @@

import os.path
import sys
+import warnings

from optparse import OptionParser

@@ -111,6 +112,8 @@
# get health status
cmd = "%s -H %s" % (path, device)
vprint(3, "Get device health status: %s" % cmd)
+ # filter out deprecation warnings
+ warnings.filterwarnings('ignore', category=DeprecationWarning, message=r'os\.popen3')
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
line = child_stderr.readline()
if len(line):
bybobbydale, December 8, 2010
1 of 2 people found this review helpful
Running Ubuntu 10.10 64-bit and I receive the following Python errors:

/usr/local/nagios/libexec/check_smartmon:114: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module.
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
/usr/local/nagios/libexec/check_smartmon:127: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module.
(child_stdin, child_stdout, child_stderr) = os.popen3(cmd)
OK: device is functional and stable (temperature: 40)

Probably needs to check for what version of Python is being used at top of script and apply commands accordingly later in script.