Найти - Пользователи
Полная версия: Подскажите модуль для работы с snmp.
Начало » Python для экспертов » Подскажите модуль для работы с snmp.
1
plusplus
Нужно опросить 4к оборудования желательно побыстрее.

Работал с netsnmp, он с этим справлялся минут за 2-4, но после обновления до debian wheezy он начал глючить, бросать сегфолты и неправильно отрабатывать walk с несколькими аргументами. Пакет libsnmp-python.

Пробовал pysnmp, с потоками он работать не может, а асинхронность я его так и не понял:
  
def cmp_varBinds(varBind, varName):
    if varName in str(varBind[0]):
        return True
def cbFun(sendRequestHandle, errorIndication, errorStatus,
                                errorIndex, varBinds, varNames):
    if not varBinds or not any(map(cmp_varBinds, varBinds[0], varNames)):
        return False
    else:
        print [str(x[1]) for x in varBinds[0]]
        return True
  
for host in hosts:
            num += 1
            id, ip, community, hc = host
            oids = []
            if hc:
                #ifHCInOctets
                oids.append('1.3.6.1.2.1.31.1.1.1.6')
                #ifHCOutOctets
                oids.append('1.3.6.1.2.1.31.1.1.1.10')
            else:
                #ifInOctets
                oids.append('1.3.6.1.2.1.2.2.1.10')
                #ifOutOctets
                oids.append('1.3.6.1.2.1.2.2.1.16')
            #ifInUcastPkts
            oids.append('1.3.6.1.2.1.2.2.1.11')
            #ifInNUcastPkts
            oids.append('1.3.6.1.2.1.2.2.1.12')
            #ifInDiscards
            oids.append('1.3.6.1.2.1.2.2.1.13')
            #ifInErrors
            oids.append('1.3.6.1.2.1.2.2.1.14')
            cmdGen.bulkCmd(
                cmdgen.CommunityData(community),
                cmdgen.UdpTransportTarget((ip, 161)),
                6, 6,
                oids,
                (cbFun, oids))
        try:
            cmdGen.snmpEngine.transportDispatcher.runDispatcher()
        except KeyboardInterrupt:
            logging.info("KeyboardInterrupt! Fetch snmp speed finished")
            exit(0)
Указываешь всё оборудование (len(hosts)==4000), он обходит далеко не всё, видимо вылетает по таймауту, разбиваешь hosts на части - работает очень долго.

Есть еще yapsnmp, не получается его собрать.
Budulianin
Попробуйте zenoss
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB