Как я могу правильно вызвать сценарий расширения SNMP с помощью MIB с помощью pysnmp 4.3?
У меня есть эта запись в файле snmpd.conf удаленного сервера:
extend check_fd_wap /app/users/nagios_checks/check_fd_wap.sh
который, в свою очередь, может быть вызван:
snmpwalk -t 60 -v2c -c greendale remoteserver 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."check_fd_wap"'
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."check_fd_wap" = STRING: { "sys_inuse" : 32640, "proc_data" : { "ssl-mmsib" : { "proc_used" : 22, "proc_limit" : 200000 } , (...) }
В pysnmp я пытаюсь вызвать MIB NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."check_fd_wap"
, используя пример кода:
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData(community, mpModel=1),
UdpTransportTarget((hostname, port)),
ContextData(),
ObjectType(ObjectIdentity('NET-SNMP-EXTEND-MIB','nsExtendOutput1Line','check_fd_wap')))
)
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
Однако это не удается с сообщением об ошибке 'DisplayString' failed to cast value OctetString
:
raise SmiError('MIB object %r having type %r failed to cast value %r: %s' % (self.__args[0].prettyPrint(), self.__args[0].getMibNode().getSyntax().__class__.__name__, self.__args[1], sys.exc_info()[1]))
;SmiError: MIB object u'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.check_fd_wap' having type 'DisplayString' failed to cast value OctetString('{ "sys_inuse" (...)"" at DisplayString
Однако вызов с переведенным OID работает нормально ('.1.3.6.1.4.1.8072.1.3.2.3.1.1.12.99.104.101.99.107.95.102.100.95.119.97.112'
).
SNMPv2-SMI::enterprises.8072.1.3.2.3.1.1.12.99.104.101.99.107.95.102.100.95.119.97.112 = { "sys_inuse" : 31110, "proc_data" : { "ssl-mmsib" : { "proc_used" : 19, "proc_limit" : 200000 } } }
В чем причина этой ошибки?
Кроме того, если я вызываю getCmd с полным MIB NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.check_fd_wap
в качестве одного аргумента, я получаю сообщение об ошибке:
pysnmp.smi.error.NoSuchObjectError: NoSuchObjectError({'str': 'Can\'t resolve node name ::(\'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line\', \'"check_fd_wap"\') at <pysnmp.smi.view.MibViewController instance at 0x2989638>'})
Можно ли вызвать SNMP-получение с полным MIB в одной строке?
Can\'t resolve node name ::(\'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line\', \'"check_fd_wap"\') at <pysnmp.smi.view.MibViewController instance at 0x2989638>'})
явно говорит о том, что есть проблема с трансляцией MIB в OID - person user2807083   schedule 08.07.2016ObjectIdentity
не вызывается должным образом, посколькуObjectType(ObjectIdentity('NET-SNMP-EXTEND-MIB','nsExtendOutput1Line','check_fd_wap')))
правильно транслируется в OID. Но это только второй вопрос, на который я бы удовлетворился ответом «Нет, это нельзя так назвать». - person André Fernandes   schedule 08.07.2016\'"check_fd_wap"\'
посмотрите на дополнительные кавычки в этой строке, может из-за этого. Я понятия не имею, откуда он взялся в сообщении об ошибке. - person user2807083   schedule 08.07.2016