diff --git a/check_naf.py b/check_naf.py index bfc22cc..fa76f91 100755 --- a/check_naf.py +++ b/check_naf.py @@ -633,8 +633,8 @@ class CheckNAF(SNMPMonitoringPlugin): fs_pctused = float(fs_used) / float(fs_total) * 100.0 - warn = self.range_dehumanize(warn, fs_total) - crit = self.range_dehumanize(crit, fs_total) + warn = self.range_dehumanize(warn, fs_total, unit=['b',]) + crit = self.range_dehumanize(crit, fs_total, unit=['b',]) returncode = self.value_wc_to_returncode(fs_used, warn, crit) output = volume + ': Used ' + self.value_to_human_binary(fs_used, 'B') @@ -662,8 +662,8 @@ class CheckNAF(SNMPMonitoringPlugin): sn_used = long(self.SNMPGET(self.OID['df_FS_kBUsed'], sn_idx)) * 1024L # sn_avail = long(self.SNMPGET(self.OID['df_FS_kBAvail'], sn_idx)) * 1024L - warn = self.range_dehumanize(warn, sn_total) - crit = self.range_dehumanize(crit, sn_total) + warn = self.range_dehumanize(warn, sn_total, unit=['b',]) + crit = self.range_dehumanize(crit, sn_total, unit=['b',]) if sn_total != 0: # Snap reserve sn_pctused = float(sn_used) / float(sn_total) * 100.0 diff --git a/monitoringplugin.py b/monitoringplugin.py index 53f9c73..ac880c2 100644 --- a/monitoringplugin.py +++ b/monitoringplugin.py @@ -300,10 +300,20 @@ class MonitoringPlugin(object): return datetime.timedelta(seconds=long(seconds)) - def human_to_number(self, value, total=None): + def human_to_number(self, value, total=None, unit=['',]): if total: if not self.is_float(total): - total = self.human_to_number(total) + total = self.human_to_number(total, unit=unit) + + if type(unit) == list: + unit = [u.lower() for u in unit] + elif type(unit) == str: + unit = [unit.lower(),] + else: + unit = ['',] + + if value.lower()[-1] in unit: + value = value[0:-1] if self.is_float(value): return float(value) @@ -323,7 +333,7 @@ class MonitoringPlugin(object): return value - def range_dehumanize(self, range, total=None): + def range_dehumanize(self, range, total=None, unit=['',]): newrange = '' if len(range): @@ -332,10 +342,10 @@ class MonitoringPlugin(object): range = range[1:] parts = range.split(':') - newrange += ('%f' % self.human_to_number(parts[0], total)).rstrip('0').rstrip('.') - + newrange += ('%s' % self.human_to_number(parts[0], total, unit)).rstrip('0').rstrip('.') + if len(parts) > 1: - newrange += ':' + ('%f' % self.human_to_number(parts[1], total)).rstrip('0').rstrip('.') + newrange += ':' + ('%s' % self.human_to_number(parts[1], total, unit)).rstrip('0').rstrip('.') if range != newrange: self.verbose(3, 'Changed range/thresold from "' + range + '" to "' + newrange + '"')