我正在尝试编写一段代码,该代码接受带有OID作为键和OID值作为值的JSON对象。一个例子是:
{".1.3.6.1.4.1.562.29.6.2.3": "Link Down",
...
}
接收到此JSON对象时,我想使用PySNMP转换OID和OID值,但是我不知道如何根据相应MIB文件中定义的文本约定来转换OID值。
一个示例MIB文件将定义:
TruthValue ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"Represents a boolean value."
SYNTAX INTEGER { true(1), false(2) }
给定一个OID和一个OID值,它遵循上述文本约定,我想翻译一下:
{"OID": 1,...}
进入 {"OID": true,...}
PySNMP可以做到吗?
pysnmp可以实现:
from pysnmp.smi import builder
mibBuilder = builder.MibBuilder()
TruthValue, = mibBuilder.importSymbols('SNMPv2-TC', 'TruthValue')
print(TruthValue(1).prettyPrint()) # prints 'true'
但是,通常,您必须以某种方式将OID映射到值类型(其中一些可能会解析为TEXTUAL-VENVENTIONS)。可以通过为应用中的特定OID硬编码OID->类型映射来以即席方式进行,但是更通用的解决方案是使用pysnmp MIB服务:
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'))
上面的示例将获取1.3.6.1.6.3.10.2.1.1.0的值类型,并将12341234值转换为关联的类型。
更新:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句