Translate OID value pairs from MIB textual convention using pysnmp

我与影子孤独终老i 提交于 2020-01-04 06:17:27

问题


I am trying to write a piece of code that accepts a JSON object with OIDs as keys and OID values as values. An Example would be:

{".1.3.6.1.4.1.562.29.6.2.3": "Link Down",
 ...
}

When this JSON object is received I want to translate the OID and the OID value using PySNMP, but I do not know how I can translate the OID value according to Textual Conventions defined within a corresponding MIB file.

An example MIB file would define:

TruthValue ::= TEXTUAL-CONVENTION
     STATUS       current
     DESCRIPTION
             "Represents a boolean value."
     SYNTAX       INTEGER { true(1), false(2) }

Given an OID and an OID value that follows a textual convention like the one above I would like to translate:

{"OID": 1,...} into {"OID": true,...}

Is this possible with PySNMP?


回答1:


That is possible with pysnmp:

from pysnmp.smi import builder

mibBuilder = builder.MibBuilder()
TruthValue, = mibBuilder.importSymbols('SNMPv2-TC', 'TruthValue')
print(TruthValue(1).prettyPrint()) # prints 'true'

However in general you would have to somehow map OIDs to value types (some of which may resolve into TEXTUAL-CONVENTIONS). This can be done in an ad-hoc manner by hardcoding OID->type mapping for specific OIDs in your app, but a more general solution is to employ pysnmp MIB services:

from pysnmp.smi import view, builder

mibViewController = view.MibViewController(builder.MibBuilder())
varName = mibvar.MibVariable('1.3.6.1.6.3.10.2.1.1.0').loadMibs('SNMP-FRAMEWORK-MIB').resolveWithMib(mibViewController)
print(varName.getMibNode().getSyntax().clone('12341234'))

The above example would fetch value type for 1.3.6.1.6.3.10.2.1.1.0 and cast 12341234 value into associated type.

UPDATED:

Consider using the higher-level interface to MIB services which is available since pysnmp 4.3



来源:https://stackoverflow.com/questions/27097809/translate-oid-value-pairs-from-mib-textual-convention-using-pysnmp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!