diff --git a/README.md b/README.md index b52f8a2cc906d74d87fe435d339787f45203b8b6..2f7d00c3275395a9599d74df48978a4839e9f891 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +[PACKAGE]: ../../raw/master/snmp_uptime-0.0.2-20230805.mkp "snmp_uptime-0.0.2-20230805.mkp" # SNMP uptime This check is based on the snmp_uptime check form CMK. It adds the SNMP-FRAMEWORK-MIB::snmpEngineTime OID to the check. Its value is in seconds not ticks and therefore the Uptime can now be around 68 years before a rollover of the counter :-) diff --git a/agent_based/snmp_uptime.py b/agent_based/snmp_uptime.py index 10c5a1f54b21d2c848afedf82a614389787659e6..41e0273ab9dd9428110594ed2834d35c8cd8d5d7 100644 --- a/agent_based/snmp_uptime.py +++ b/agent_based/snmp_uptime.py @@ -14,7 +14,7 @@ # 2022-03-06: extended to use snmpEngineTime if available # 2022-03-07: fixed if snmpEngineTime == 0 # 2022-03-08: renamed to snmp_uptime_extended to avoid caching issues with the original check -# +# 2023-08-05: made parse function more stable (try/except/else) from typing import Optional @@ -35,22 +35,23 @@ def parse_snmp_uptime_extended(string_table: StringTable) -> Optional[uptime.Sec Section(uptime_sec=313671, message=None) """ - if not string_table: - return None - - sysUpTime, hrSystemUptime, snmpEngineTime = string_table[0] + try: + sysUpTime, hrSystemUptime, snmpEngineTime = string_table[0] + except ValueError: + return ticks = sysUpTime or hrSystemUptime if len(ticks) < 3: - return None + return try: value = int(snmpEngineTime) - if value > 0: - return uptime.Section(int(snmpEngineTime), None) except ValueError: pass + else: + if value > 0: + return uptime.Section(int(snmpEngineTime), None) try: return uptime.Section(int(ticks[:-2]), None) @@ -59,14 +60,13 @@ def parse_snmp_uptime_extended(string_table: StringTable) -> Optional[uptime.Sec try: days, h, m, s = ticks.split(":") + except ValueError: + pass + else: return uptime.Section( (int(days) * 86400) + (int(h) * 3600) + (int(m) * 60) + int(float(s)), None, ) - except ValueError: - pass - - return None register.snmp_section( diff --git a/packages/snmp_uptime b/packages/snmp_uptime index b8c3394217e6c432ac8e9f0a07c93d6ab2a2bc9a..922b4a0930884b36bd8e2745ce249bb63ca7530f 100644 --- a/packages/snmp_uptime +++ b/packages/snmp_uptime @@ -7,9 +7,8 @@ 'download_url': 'https://thl-cmk.hopto.org', 'files': {'agent_based': ['snmp_uptime.py']}, 'name': 'snmp_uptime', - 'num_files': 1, 'title': 'SNMP Uptime', - 'version': '20220306.v0.0.1', - 'version.min_required': '2021.09.20', - 'version.packaged': '2021.09.20', - 'version.usable_until': None} \ No newline at end of file + 'version': '0.0.2-20230805', + 'version.min_required': '2.0.0b1', + 'version.packaged': '2.2.0p7', + 'version.usable_until': None} diff --git a/snmp_uptime-0.0.2-20230805.mkp b/snmp_uptime-0.0.2-20230805.mkp new file mode 100644 index 0000000000000000000000000000000000000000..ffdf984d70cb9990bdfd1b177ceeae986a5f4984 Binary files /dev/null and b/snmp_uptime-0.0.2-20230805.mkp differ diff --git a/snmp_uptime.mkp b/snmp_uptime.mkp deleted file mode 100644 index 816516f34f3d5b449efca0eb7d6cd2c579fbc189..0000000000000000000000000000000000000000 Binary files a/snmp_uptime.mkp and /dev/null differ