PySNMP изменить формат вывода

Для лучшей производительности я должен перенести свой скрипт bash на скрипт python... Итак, я начинаю использовать pysnmp, и у меня возникает проблема с форматом вывода...

Ниже вы найдете запрос netsnmp:

snmpwalk -v 2c -c mycommunity 192.168.2.20 1.3.6.1.4.1.9.9.387.1.7.8.1.3

То же самое с pysnmp:

errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
        cmdgen.CommunityData('mycommunity'),
        cmdgen.UdpTransportTarget(('192.168.2.20', 161)),
        '1.3.6.1.4.1.9.9.387.1.7.8.1.3'
)

С помощью netsnmp я могу изменить формат вывода следующим образом:

snmpwalk -v 2c -Oa -c mycommunity 192.168.2.20 1.3.6.1.4.1.9.9.387.1.7.8.1.3

Но я не могу изменить формат вывода с помощью pysnmp. Как я могу это сделать?


person Vender Aeloth    schedule 18.03.2014    source источник


Ответы (2)


Все значения ответа находятся в VarBindTable, поэтому вы можете отформатировать его по своему усмотрению. Например:

>>> varBindTable
[ [(ObjectName('1.3.6.1.2.1.1.1.0'), OctetString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'))] ]
>>> varBindTable[0][0][1]
OctetString('SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m')
>>> varBindTable[0][0][1].asOctets()
'SunOS zeus.snmplabs.com 4.1.3_U1 1 sun4m'
>>> varBinds[0][1].asOctets()

В pysnmp нет встроенной опции для изменения формата вывода в соответствии с некоторыми предопределенными настройками.

person Pooh    schedule 19.03.2014

Я не использовал решение Пуха, но это помогло мне понять, что делать :

val.prettyPrint().encode("hex")
person Vender Aeloth    schedule 20.03.2014