diff --git a/monitoringplugin.py b/monitoringplugin.py index 3608009..ea777b5 100644 --- a/monitoringplugin.py +++ b/monitoringplugin.py @@ -614,6 +614,10 @@ class SNMPMonitoringPlugin(MonitoringPlugin): cmdline = self.__CMDLINE_get % oid self.verbose(2, cmdline) + if oid in self.__SNMP_Cache: + self.verbose(2, "(CACHED) %s" % (self.__SNMP_Cache[oid])) + return self.__SNMP_Cache[oid] + cmd = os.popen(cmdline) out = cmd.readline().rstrip().replace('"','') retcode = cmd.close() @@ -628,6 +632,8 @@ class SNMPMonitoringPlugin(MonitoringPlugin): else: self.back2nagios(3, 'Unknown error code "' + str(retcode) + '" from command line utils') + self.__SNMP_Cache[oid] = out + self.verbose(1, out) return out @@ -639,6 +645,10 @@ class SNMPMonitoringPlugin(MonitoringPlugin): cmdline = self.__CMDLINE_walk % oid self.verbose(2, cmdline) + if oid in self.__SNMP_Cache: + self.verbose(2, "(CACHED) %s" % (self.__SNMP_Cache[oid])) + return self.__SNMP_Cache[oid] + cmd = os.popen(cmdline) out = cmd.readlines() retcode = cmd.close() @@ -656,6 +666,8 @@ class SNMPMonitoringPlugin(MonitoringPlugin): for line in range(0,len(out)): out[line] = out[line].rstrip().replace('"','') + self.__SNMP_Cache[oid] = out + self.verbose(1, str(out)) return out