Date: Sun, 24 Jan 2010 20:24:54 GMT From: Thomas Rasmussen <thomas@gibfest.dk> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/143185: net-mgmt/nagios-check_smartmon produces warnings Message-ID: <201001242024.o0OKOsJs043280@www.freebsd.org> Resent-Message-ID: <201001242030.o0OKU6ic030421@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 143185 >Category: ports >Synopsis: net-mgmt/nagios-check_smartmon produces warnings >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Jan 24 20:30:06 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Thomas Rasmussen >Release: 8.0-RELEASE-p2 amd64 >Organization: Tykling Inc. >Environment: FreeBSD server.local 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0: Tue Jan 5 21:11:58 UTC 2010 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 >Description: As evidenced by the output below, the port for the Nagios plugin check_smartmon outputs a couple of warnings when you run it, it works fine though: [tykling@server ~]$ sudo /usr/local/libexec/nagios/check_smartmon -d /dev/ad4 /usr/local/libexec/nagios/check_smartmon:114: DeprecationWarning: os.popen3 is deprecated. Use the subprocess module. (child_stdin, child_stdout, child_stderr) = os.popen3(cmd) /usr/local/libexec/nagios/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: 43) >How-To-Repeat: sudo /usr/local/libexec/nagios/check_smartmon -d /dev/ad4 .replacing ad4 for any SMART enabled device in the system. >Fix: The fix to stop these warnings is to change the way smartctl is called from the python script from the old os.popen3 to the new subprocess.Popen way. See http://docs.python.org/library/subprocess.html#replacing-older-functions-with-the-subprocess-module for more. The attached patch changes this and appears to stop the warnings. I am new with Python so perhaps someone should check that it looks correct. Patch attached with submission follows: --- check_smartmon 2010-01-24 18:11:23.000000000 +0100 +++ check_smartmon_patch 2010-01-24 21:11:18.000000000 +0100 @@ -29,6 +29,7 @@ import os.path import sys +from subprocess import Popen,PIPE from optparse import OptionParser @@ -111,7 +112,8 @@ # get health status cmd = "%s -H %s" % (path, device) vprint(3, "Get device health status: %s" % cmd) - (child_stdin, child_stdout, child_stderr) = os.popen3(cmd) + p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) + (child_stdout, child_stderr) = (p.stdout, p.stderr) line = child_stderr.readline() if len(line): return (3, "UNKNOWN: call exits unexpectedly (%s)" % line, "", @@ -124,7 +126,8 @@ # get temperature cmd = "%s -A %s" % (path, device) vprint(3, "Get device temperature: %s" % cmd) - (child_stdin, child_stdout, child_stderr) = os.popen3(cmd) + p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) + (child_stdout, child_stderr) = (p.stdout, p.stderr) line = child_stderr.readline() if len(line): return (3, "UNKNOWN: call exits unexpectedly (%s)" % line, "", >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001242024.o0OKOsJs043280>