Catch up with smartctl changes while retaining old behaviour.
PR: 236227 Approved by: Krzysztof <ports@bsdserwis.com> (maintainer) MFH: 2019Q1
This commit is contained in:
parent
5e90bfabe5
commit
0063345510
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=495081
2 changed files with 45 additions and 9 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= check_smartmon
|
||||
PORTVERSION= 20100318
|
||||
PORTREVISION= 3
|
||||
PORTREVISION= 4
|
||||
CATEGORIES= net-mgmt
|
||||
MASTER_SITES= http://ftp.bsdserwis.com/pub/FreeBSD/ports/distfiles/
|
||||
PKGNAMEPREFIX= nagios-
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- check_smartmon.orig 2019-02-01 04:28:13.000000000 +0000
|
||||
+++ check_smartmon 2019-02-04 22:27:35.297345000 +0000
|
||||
@@ -161,9 +161,12 @@
|
||||
--- check_smartmon.orig 2019-03-04 20:08:28 UTC
|
||||
+++ check_smartmon
|
||||
@@ -161,9 +161,12 @@ def parseOutput(healthMessage, temperatureMessage, dev
|
||||
lines = healthMessage.split("\n")
|
||||
getNext = 0
|
||||
for line in lines:
|
||||
|
@ -15,7 +15,7 @@
|
|||
elif line == "=== START OF READ SMART DATA SECTION ===":
|
||||
getNext = 1
|
||||
# fi
|
||||
@@ -181,7 +184,7 @@
|
||||
@@ -181,7 +184,7 @@ def parseOutput(healthMessage, temperatureMessage, dev
|
||||
parts = line.split()
|
||||
if len(parts):
|
||||
# 194 is the temperature value id
|
||||
|
@ -24,7 +24,43 @@
|
|||
temperature = int(parts[9])
|
||||
break
|
||||
# fi
|
||||
@@ -225,6 +228,7 @@
|
||||
@@ -190,9 +193,11 @@ def parseOutput(healthMessage, temperatureMessage, dev
|
||||
# if devType == ata
|
||||
|
||||
if devType == "scsi":
|
||||
- stat_re = re.compile( r'SMART Health Status:' )
|
||||
+ vprint(3, "parseOutput: searching for 'SMART Health Status' section")
|
||||
+ stat_re = re.compile( r'SMART Health Status:|SMART overall-health self-assessment test result:' )
|
||||
lines = healthMessage.split("\n")
|
||||
for line in lines:
|
||||
+ vprint(3, "parseOutput: line is: '%s'" % line)
|
||||
if stat_re.search( line ):
|
||||
parts = line.split()
|
||||
healthStatus = parts[-1]
|
||||
@@ -201,14 +206,20 @@ def parseOutput(healthMessage, temperatureMessage, dev
|
||||
# done
|
||||
|
||||
# get temperature from temperatureMessage
|
||||
- stat_re = re.compile( r'Current Drive Temperature:' )
|
||||
+ temperature = 0
|
||||
+ vprint(3, "parseOutput: searching for temperature line section")
|
||||
+ stat_re = re.compile( r'Current Drive Temperature:|Temperature_Celsius' )
|
||||
lines = temperatureMessage.split("\n")
|
||||
for line in lines:
|
||||
+ vprint(3, "parseOutput: line is: '%s'" % line)
|
||||
if stat_re.search( line ):
|
||||
parts = line.split()
|
||||
- temperature = int(parts[-2])
|
||||
+ vprint(3, "parseOutput: we are very keen on this line: '%s'" % line)
|
||||
+ temperature = int(parts[-3])
|
||||
+ vprint(3, "parseOutput: Is this the temperature? '%s'" % temperature)
|
||||
break
|
||||
# fi
|
||||
+
|
||||
# done
|
||||
|
||||
# if devType == scsi
|
||||
@@ -225,6 +236,7 @@ def createReturnInfo(healthStatus, temperature, warnin
|
||||
|
||||
# this is absolutely critical!
|
||||
if healthStatus not in [ "PASSED", "OK" ]:
|
||||
|
@ -32,11 +68,11 @@
|
|||
return (2, "CRITICAL: device does not pass health status")
|
||||
# fi
|
||||
|
||||
@@ -287,6 +291,7 @@
|
||||
@@ -287,6 +299,7 @@ if __name__ == "__main__":
|
||||
# check device type, ATA is default
|
||||
vprint(2, "Get device type")
|
||||
devtype = options.devtype
|
||||
+ vprint(2, "command line supplied device type is: %s" % devtype)
|
||||
if not devtype:
|
||||
if device_re.search( device ):
|
||||
devtype = "scsi"
|
||||
devtype = "ATA"
|
||||
|
||||
|
|
Loading…
Reference in a new issue