2015-05-18 4 views
0

Python 3.4 - Последняя версия PYSNMP (пип --update)Python 3.4 PYSNMP Set вопросы

Возникли проблемы с настройкой значений ifAlias ​​с использованием библиотеки PYSNMP. Надеясь, что кто-то может пролить свет на то, почему я получаю ошибки во второй функции.

Проверено, что этот OID является setable с использованием стандартной MIB-браузер (iReasoning)

Это один работает просто отлично. Вам просто нужно положить строку new sys contact value в функцию, и это хорошо.

def SNMP_SET_SYSCONTACT(syscontact): 
      errorIndication, errorStatus, errorIndex, varBinds = cmdGen.setCmd(
cmdgen.CommunityData('private'), 
cmdgen.UdpTransportTarget(('10.101.0.221', 161)),(cmdgen.MibVariable('.1.3.6.1.2.1.1.4.0'), syscontact), 
lookupNames=False, 
lookupValues=True) 

Это не работает вообще.

def SNMP_SET_IFALIAS(ifAlias): 
       errorIndication, errorStatus, errorIndex, varBinds = cmdGen.setCmd(
cmdgen.CommunityData('private'), 
cmdgen.UdpTransportTarget(('10.101.0.221', 161)),(cmdgen.MibVariable('1.3.6.1.2.1.31.1.1.1.18.1'), ifAlias), 
lookupValues=False, 
lookupNames=False) 

Ошибка я получаю Спинка:

Traceback (most recent call last): 
    File "<pyshell#632>", line 1, in <module> 
    SNMP_SET_IFALIAS('Check this out') 
    File "<pyshell#629>", line 2, in SNMP_SET_IFALIAS 
    errorIndication, errorStatus, errorIndex, varBinds = cmdGen.setCmd(cmdgen.CommunityData('private'),cmdgen.UdpTransportTarget(('10.101.0.221', 161)),(cmdgen.MibVariable('1.3.6.1.2.1.31.1.1.1.18.1'), ifAlias),lookupValues=False, lookupNames=False) 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py", line 452, in setCmd 
    kwargs.get('contextName', null) 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py", line 314, in setCmd 
    self.makeVarBinds(varBinds), 
    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py", line 212, in makeVarBinds 
    varVal = varName.getMibNode().getSyntax().clone(varVal) 
AttributeError: 'MibIdentifier' object has no attribute ‘getSyntax' 

Я рад предоставить дополнительную информацию, если это необходимо.


еще два коротких вопроса

1) Я попытался захватить последнюю pysnmp 4.2.6.2, но я получаю заблокирован по установке со следующей ошибкой

Не удалось найти версия, которая удовлетворяет требованию pyasn1> = 0.1.8
(из pysnmp) (из версий: 0.0.9a0, 0.0.10a0, 0.0.11a0, 0.0.12a0,
0.0.13a0, 0.0.13b0, 0.0. 13, 0,1,1 , 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7) Нет Распределение соответствия не найдено для pyasn1> = 0.1.8 (от pysnmp)

2) Я неправильно понимаю lookupValues ​​= False & lookupNames = False kwargs выше? Я думал, что это должно было позволить мне напрямую обращаться к OID, не импортируя MIB. Я хотел бы избежать любых зависимостей, если это возможно.

ответ

1

Это похоже на ошибку в pysnmp - последняя версия CVS не может выбраться именно так.

Однако основной причиной этой ошибки является то, что pysnmp не смог найти объект MIB, соответствующий OID 1.3.6.1.2.1.31.1.1.1.18.1. Это может произойти либо потому, что MIB, который определяет, что OID не загружен, или OID, о котором идет речь, не соответствует ни одному объекту MIB.

Для загрузки IF-MIB вы можете либо сделать это явно:

cmdgen.MibVariable('1.3.6.1.2.1.31.1.1.1.18.1').loadMibs('IF-MIB') 

или использовать MIB :: object.index синтаксис:

cmdgen.MibVariable('IF-MIB', 'ifAlias', 1) 

Вы могли захватить IF-MIB.py от pysnmp-mibs, доступный на pypi или скомпилировать его из ASN.1 MIB by [experimental] pysmi compiler (http://sf.net/projects/pysmi/)

+0

Спасибо за указатели! Еще два вопроса – netmanchris