コード例 #1
0
 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;
コード例 #2
0
ファイル: check_ospf.py プロジェクト: zbyszkop/puppet
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: test_manager.py プロジェクト: duancwd/python_shua
 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()
コード例 #5
0
 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)
コード例 #6
0
ファイル: check_snimpy.py プロジェクト: jasperGreve/monplugs
                         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)
コード例 #7
0
ファイル: test_manager.py プロジェクト: duancwd/python_shua
 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
コード例 #8
0
 def poweroff (self, port):
     m = Manager (self.URI, "private", 2)
     m.ePDUOutletControlOutletCommand[port] = 'immediateOff'
コード例 #9
0
 def poweron (self, port):
     numeric = int(port);
     m = Manager (self.URI, "private", 2)
     m.ePDUOutletControlOutletCommand[port] = 'immediateOn'
コード例 #10
0
 def num_ports (self):
     m = Manager (self.URI, "public", 2)
     return m.ePDUIdentDeviceNumOutlets
コード例 #11
0
 def powerstatus(self, port):
     m = Manager(self.URI, "public", 2)
     return m.epc8PortState[port]
コード例 #12
0
 def poweroff(self, port):
     m = Manager(self.URI, "private", 2)
     m.epc8PortState[port] = 0
コード例 #13
0
 def num_ports(self):
     m = Manager(self.URI, "public", 2)
     return m.epc8portNumber
コード例 #14
0
# [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'
コード例 #15
0
ファイル: apc.py プロジェクト: gwythaint/r4d
 def num_ports(self):
     m = Manager(self.URI, "public", 2)
     return m.rPDUOutletDevNumTotalOutlets
コード例 #16
0
ファイル: pc8210v4.py プロジェクト: ci-rt/r4d
 def poweron(self, port):
     m = Manager(self.URI, "private", 2)
     m.epc8210PortState[port] = 1