aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubilay Kocak <koobs@FreeBSD.org>2019-05-24 10:22:59 +0000
committerKubilay Kocak <koobs@FreeBSD.org>2019-05-24 10:22:59 +0000
commitd96ea76c60a7988d71234d8ab6a70cf969e3f432 (patch)
tree03e649ff949e28e5b0956d67e1adf12640a40457
parent104133a924ae526fd07245af6e8b408e3872068d (diff)
downloadports-d96ea76c60a7988d71234d8ab6a70cf969e3f432.tar.gz
ports-d96ea76c60a7988d71234d8ab6a70cf969e3f432.zip
MFH: r502340 net-mgmt/nagios-check_smartmon: Fix ValueError with some drive values
After upgrading to version 20100318_4, users reported ValueError for some disks [1] Also fix Python 3.x compatibility [2] While I'm here: - Pet portlint, NO_* in USE{S} section - Make concurrent-safe, installs executables in libexec PR: 236873 Reported by: Thomas Eckhardt <freebsd eckieck de> [1] Submitted by: Thomas Eckhardt <freebsd eckieck de> [1] Submitted by: Krzysztof <ports bsdserwis com> (maintainer) [2] Approved by: Krzysztof <ports bsdserwis com> (maintainer) Approved by: ports-secteam (miwi, blanket: runtime bugfix)
Notes
Notes: svn path=/branches/2019Q2/; revision=502450
-rw-r--r--net-mgmt/nagios-check_smartmon/Makefile3
-rw-r--r--net-mgmt/nagios-check_smartmon/files/patch-check_smartmon87
2 files changed, 79 insertions, 11 deletions
diff --git a/net-mgmt/nagios-check_smartmon/Makefile b/net-mgmt/nagios-check_smartmon/Makefile
index 1e51ebde9075..6f4d60f1ca7a 100644
--- a/net-mgmt/nagios-check_smartmon/Makefile
+++ b/net-mgmt/nagios-check_smartmon/Makefile
@@ -7,6 +7,7 @@ PORTREVISION= 4
CATEGORIES= net-mgmt
MASTER_SITES= http://ftp.bsdserwis.com/pub/FreeBSD/ports/distfiles/
PKGNAMEPREFIX= nagios-
+PKGNAMESUFFIX= ${PYTHON_PKGNAMESUFFIX}
MAINTAINER= ports@bsdserwis.com
COMMENT= Nagios plug-in to get status from smartmontools
@@ -16,6 +17,8 @@ LICENSE= GPLv2+
RUN_DEPENDS= ${LOCALBASE}/sbin/smartctl:sysutils/smartmontools
USES= python shebangfix
+USE_PYTHON= concurrent
+
NO_BUILD= yes
NO_ARCH= yes
diff --git a/net-mgmt/nagios-check_smartmon/files/patch-check_smartmon b/net-mgmt/nagios-check_smartmon/files/patch-check_smartmon
index eaa34c6f56b6..ac958305eab7 100644
--- a/net-mgmt/nagios-check_smartmon/files/patch-check_smartmon
+++ b/net-mgmt/nagios-check_smartmon/files/patch-check_smartmon
@@ -1,21 +1,62 @@
---- check_smartmon.orig 2019-03-04 20:08:28 UTC
+--- check_smartmon.orig 2019-04-16 21:26:22 UTC
+++ check_smartmon
-@@ -161,9 +161,12 @@ def parseOutput(healthMessage, temperatureMessage, dev
- lines = healthMessage.split("\n")
+@@ -52,8 +52,8 @@ def parseCmdLine(args):
+ version = "%%prog %s" % (__version__)
+
+ parser = OptionParser(usage=usage, version=version)
+- parser.add_option("-d", "--device", action="store", dest="device", default="", metavar="DEVICE",
+- help="device to check")
++ parser.add_option("-d", "--device", action="store", dest="device", default="", metavar="DEVICE",
++ help="device to check")
+ parser.add_option("-v", "--verbosity", action="store",
+ dest="verbosity", type="int", default=0,
+ metavar="LEVEL", help="set verbosity level to LEVEL; defaults to 0 (quiet), \
+@@ -123,7 +123,7 @@ def callSmartMonTools(path, device):
+ "")
+ healthStatusOutput = ""
+ for line in child_stdout:
+- healthStatusOutput = healthStatusOutput + line
++ healthStatusOutput = healthStatusOutput + line.decode('utf-8')
+ # done
+
+ # get temperature
+@@ -138,7 +138,7 @@ def callSmartMonTools(path, device):
+
+ temperatureOutput = ""
+ for line in child_stdout:
+- temperatureOutput = temperatureOutput + line
++ temperatureOutput = temperatureOutput + line.decode('utf-8')
+ # done
+
+ return (0 ,"", healthStatusOutput, temperatureOutput)
+@@ -153,6 +153,7 @@ def parseOutput(healthMessage, temperatu
+
+ vprint(3, "parseOutput: Device type is %s" % devType)
+
++ healthStatus = ""
+ if devType == "ata":
+ # parse health status
+ #
+@@ -162,13 +163,16 @@ def parseOutput(healthMessage, temperatu
getNext = 0
for line in lines:
-+ vprint(3, "parseOutput: line is: '%s'" % line)
if getNext:
- statusLine = line
- break
-+ if line <> "SMART STATUS RETURN: incomplete response, ATA output registers missing" and \
-+ line <> "SMART Status not supported: Incomplete response, ATA output registers missing" :
++ if line != "SMART STATUS RETURN: incomplete response, ATA output registers missing" and \
++ line != "SMART Status not supported: Incomplete response, ATA output registers missing" :
+ statusLine = line
+ break
elif line == "=== START OF READ SMART DATA SECTION ===":
getNext = 1
# fi
-@@ -181,7 +184,7 @@ def parseOutput(healthMessage, temperatureMessage, dev
+ # done
+
++ vprint(3, "parseOutput: statusLine is: '%s'" % statusLine )
+ if getNext:
+ parts = statusLine.split()
+ healthStatus = parts[-1]
+@@ -181,7 +185,7 @@ def parseOutput(healthMessage, temperatu
parts = line.split()
if len(parts):
# 194 is the temperature value id
@@ -24,7 +65,7 @@
temperature = int(parts[9])
break
# fi
-@@ -190,9 +193,11 @@ def parseOutput(healthMessage, temperatureMessage, dev
+@@ -190,9 +194,11 @@ def parseOutput(healthMessage, temperatu
# if devType == ata
if devType == "scsi":
@@ -37,7 +78,7 @@
if stat_re.search( line ):
parts = line.split()
healthStatus = parts[-1]
-@@ -201,14 +206,20 @@ def parseOutput(healthMessage, temperatureMessage, dev
+@@ -201,19 +207,25 @@ def parseOutput(healthMessage, temperatu
# done
# get temperature from temperatureMessage
@@ -60,7 +101,13 @@
# done
# if devType == scsi
-@@ -225,6 +236,7 @@ def createReturnInfo(healthStatus, temperature, warnin
+
+- vprint(3, "Health status: %s" % healthStatus)
++ vprint(3, "Health status: %s" % healthStatus)
+ vprint(3, "Temperature: %d" %temperature)
+
+ return (healthStatus, temperature)
+@@ -225,6 +237,7 @@ def createReturnInfo(healthStatus, tempe
# this is absolutely critical!
if healthStatus not in [ "PASSED", "OK" ]:
@@ -68,7 +115,25 @@
return (2, "CRITICAL: device does not pass health status")
# fi
-@@ -287,6 +299,7 @@ if __name__ == "__main__":
+@@ -241,7 +254,7 @@ def createReturnInfo(healthStatus, tempe
+ def exitWithMessage(value, message):
+ """Exit with given value and status message."""
+
+- print message
++ print( message )
+ sys.exit(value)
+ # end
+
+@@ -254,7 +267,7 @@ def vprint(level, message):
+ """
+
+ if level <= verbosity:
+- print message
++ print( message )
+ # fi
+ # end
+
+@@ -287,6 +300,7 @@ if __name__ == "__main__":
# check device type, ATA is default
vprint(2, "Get device type")
devtype = options.devtype