使用PySNMP作为自身/供应商MIB的陷阱接收器

时间:2019-02-26 09:24:12

标签: python pysnmp mib

我尝试使用PySNMP接收SNMPv3陷阱。我找到了以下示例代码:

var allArticlesWithEditions = await _dbContext.Articles.Include(x=>x.Edition).ToListAsync();

此代码对我有用,但是我得到了原始陷阱。我有一个要使用的供应商特定的MIB文件。但是我找不到任何有关如何将mib绑定到snmpEngine的文档。 PySNMP文档中使用MIB的示例仅显示SNMP GET操作的用法,不适用于此处。 有人曾经尝试过此方法并且可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的目标是将收到的原始变量绑定解析为对人类友好的形式,则您需要通过MIB浏览器对象process {{3}}。

是的,这与示例中命令生成器经常执行的操作完全相同。

from pysnmp.smi import builder, view, compiler, rfc1902

# Assemble MIB browser
mibBuilder = builder.MibBuilder()
mibViewController = view.MibViewController(mibBuilder)
compiler.addMibCompiler(
    mibBuilder, sources=['file:///usr/share/snmp/mibs',
                         'http://mibs.snmplabs.com/asn1/@mib@'])

# Pre-load MIB modules that define objects we receive in TRAPs
mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-COMMUNITY-MIB')

# This is what we would get in a TRAP PDU
varBinds = [
    ('1.3.6.1.2.1.1.3.0', 12345),
    ('1.3.6.1.6.3.1.1.4.1.0', '1.3.6.1.6.3.1.1.5.2'),
    ('1.3.6.1.6.3.18.1.3.0', '0.0.0.0'),
    ('1.3.6.1.6.3.18.1.4.0', ''),
    ('1.3.6.1.6.3.1.1.4.3.0', '1.3.6.1.4.1.20408.4.1.1.2'),
    ('1.3.6.1.2.1.1.1.0', 'my system')
]

# Pass raw var-binds through MIB browser
varBinds = [
    rfc1902.ObjectType(rfc1902.ObjectIdentity(x[0]), x[1]).resolveWithMib(mibViewController)
    for x in varBinds
]

for varBind in varBinds:
    print(varBind.prettyPrint())