Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2013 15:14:33

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Подскажите модуль для работы с snmp.

Нужно опросить 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, не получается его собрать.



Офлайн

#2 Сен. 30, 2013 23:43:45

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Подскажите модуль для работы с snmp.

Попробуйте zenoss



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version