def powerstatus (self, port): m = Manager (self.URI, "public", 2) if m.ePDUOutletStatusOutletState[port] == 2: return 1 if m.ePDUOutletStatusOutletState[port] == 1: return 0 return -1;
def main(): parser = argparse.ArgumentParser() parser.add_argument("--host", dest='host', required=True, help="Target hostname") parser.add_argument("--community", dest='community', required=True, help="SNMP community") options = parser.parse_args() load('OSPF-MIB') load('OSPFV3-MIB') snimpyManager = Manager(options.host, options.community, 2, timeout=30, cache=True) return_code = ICINGA_OK output_messages = [] counters = Counter() # OSPFv2 for index, ifState in snimpyManager.ospfIfState.items(): if ifState == STATE_P2P: # Count configured P2P interfaces # Workaround a bug where interface 0.0.0.0 shows up as P2P if snimpyManager.ospfIfIpAddress[index] != '0.0.0.0': counters['p2pif'] += 1 for index, nbrState in snimpyManager.ospfNbrState.items(): if nbrState == NBR_STATE_FULL: # Count UP neighbors counters['up'] += 1 # If less neighbors than P2P interfaces, alert if counters['up'] < counters['p2pif']: return_code = ICINGA_CRITICAL output_messages.append("OSPFv2: {up}/{tot} UP".format(up=counters['up'], tot=counters['p2pif'])) # OSPFv3, same as OSPFv2 for index, ifState in snimpyManager.ospfv3IfState.items(): if ifState == STATE_P2P: counters['v3_p2pif'] += 1 for index, nbrState in snimpyManager.ospfv3NbrState.items(): if nbrState == NBR_STATE_FULL: counters['v3_up'] += 1 if counters['v3_up'] < counters['v3_p2pif']: return_code = ICINGA_CRITICAL output_messages.append("OSPFv3: {up}/{tot} UP".format(up=counters['v3_up'], tot=counters['v3_p2pif'])) # Ensure we have as many OSPFv2 as OSPFv3 neighbors if counters['v3_p2pif'] != counters['p2pif']: return_code = ICINGA_CRITICAL output_messages.append("{} v2 P2P interfaces vs. {} v3 P2P interfaces".format( counters['p2pif'], counters['v3_p2pif'])) print(' ; '.join(output_messages)) return(return_code)
def main(): parser = argparse.ArgumentParser() parser.add_argument("--host", nargs=1, dest='host', required=True, help="Target hostname") parser.add_argument("--community", nargs=1, dest='community', required=True, help="SNMP community") options = parser.parse_args() load("BFD-STD-MIB") snimpyManager = Manager(options.host[0], options.community[0], 2, cache=True) return_code = 0 return_message = [] up_count = 0 down_count = 0 adminDown_count = 0 for index in snimpyManager.bfdSessState: if snimpyManager.bfdSessAddrType[index] == 1: # v4 session peerIP = ipaddress.IPv4Address(snimpyManager.bfdSessAddr[index]) elif snimpyManager.bfdSessAddrType[index] == 2: # v6 session peerIP = ipaddress.IPv6Address(snimpyManager.bfdSessAddr[index]) state = snimpyManager.bfdSessState[index] # States: adminDown(1), down(2), init(3), up(4) if state == 2 or state == 3: down_count += 1 return_code = 2 return_message.append("BFD neighbor {} down".format(peerIP)) elif state == 4: up_count += 1 elif state == 1: adminDown_count += 1 if return_code == 0: print('OK:' + ' UP: ' + str(up_count) + ' AdminDown: ' + str(adminDown_count) + ' Down: ' + str(down_count)) print("OK: UP: {} AdminDown: {} Down: {}".format( up_count, adminDown_count, down_count)) else: print("CRIT: Down: {}".format(down_count)) print('\n'.join(return_message)) sys.exit(return_code)
def testAccessNotExistentTable(self): """Try to walk a non-existent table""" agent2 = agent.TestAgent(emptyTable=False) try: manager = Manager(host="127.0.0.1:{0}".format(agent2.port), community="public", version=2) [(idx, ) for idx in manager.snimpyEmptyDescr] except snmp.SNMPNoSuchObject: pass # That's OK else: self.assertFalse("should raise SNMPNoSuchObject exception") finally: agent2.terminate()
def __init__(self, host, snmp_conf, poe=False, lldp=False, vlan=False, ipsetup=False): opts = SNMP_OPTS.copy() opts.update(host=host) opts.update(snmp_conf) self.host = host self.snmp = Manager(**opts) if poe: self.poe = PoEProxy(self.snmp, host) if lldp: self.lldp = LLDPProxy(self.snmp, host) if vlan: self.vlan = VlanProxy(self.snmp) if ipsetup: self.ipsetup = IPSetupProxy(self.snmp)
dest="community", default='public') helper.parse_arguments() # Here starts our plugin specific logic. Lets try to read /proc/loadavg # And if it fails, we exit immediately with UNKNOWN status try: load(helper.options.mib) except Exception, e: helper.exit(summary="Could not read MIB file.", long_output=str(e), exit_code=unknown, perfdata='') m = Manager(helper.options.host, helper.options.community, int(helper.options.version)) formatstring = helper.options.value + ': %s' commandstring = "m." + helper.options.value content = eval(commandstring) helper.add_summary(formatstring % content) # Read metrics from /proc/loadavg and add them as performance metrics #load1,load5,load15,processes,last_proc_id = content.split() #running,total = processes.split('/') # If we so desire we can set default thresholds by adding warn attribute here # However we decide that there are no thresholds by default and they have to be # applied on runtime with the --threshold option helper.add_metric(label=helper.options.value, value=content) #helper.add_metric(label='load5',value=load5)
def setUp(self): self.manager = Manager(host="127.0.0.1:{0}".format(self.agent.port), community="public", version=2, loose=True) self.session = self.manager._session
def poweroff (self, port): m = Manager (self.URI, "private", 2) m.ePDUOutletControlOutletCommand[port] = 'immediateOff'
def poweron (self, port): numeric = int(port); m = Manager (self.URI, "private", 2) m.ePDUOutletControlOutletCommand[port] = 'immediateOn'
def num_ports (self): m = Manager (self.URI, "public", 2) return m.ePDUIdentDeviceNumOutlets
def powerstatus(self, port): m = Manager(self.URI, "public", 2) return m.epc8PortState[port]
def poweroff(self, port): m = Manager(self.URI, "private", 2) m.epc8PortState[port] = 0
def num_ports(self): m = Manager(self.URI, "public", 2) return m.epc8portNumber
# [email protected] from snimpy.manager import Manager from snimpy.manager import load from snimpy.snmp import SNMPNoSuchObject import sys import argparse parser = argparse.ArgumentParser() parser.add_argument("--host", nargs=1, dest='host', required=True, help="Target hostname") parser.add_argument("--community", nargs=1, dest='community', required=True, help="SNMP community") options = parser.parse_args() load('JUNIPER-VIRTUALCHASSIS-MIB') snimpyManager = Manager(options.host[0], options.community[0], 2, cache=True) return_code = 0 return_message = [] up_count = 0 down_count = 0 unknown_count = 0 for index in snimpyManager.jnxVirtualChassisPortAdminStatus: adminStatus = snimpyManager.jnxVirtualChassisPortAdminStatus[index] operStatus = snimpyManager.jnxVirtualChassisPortOperStatus[index] try: portName = snimpyManager.jnxVirtualChassisPortName[index] fpcId = snimpyManager.jnxVirtualChassisFpcId[index] except SNMPNoSuchObject: portName = 'N/A'
def num_ports(self): m = Manager(self.URI, "public", 2) return m.rPDUOutletDevNumTotalOutlets
def poweron(self, port): m = Manager(self.URI, "private", 2) m.epc8210PortState[port] = 1