Pysnmp SNMP 陷阱与自己的 MIB

问题描述 投票:0回答:1

我目前正在尝试使用我自己的 OID 发送陷阱。在command Line中,命令如下所示: ```` $ snmptrap -v 2c -c '' 1.9.9.9.0 1.9.9.9.1 i 1 1.9.9.9.8 s“文本” ````

我尝试使用 PySNMP 在 Python 中编写相同的命令。作为参考,我使用了文档:https://pysnmp.readthedocs.io/en/latest/examples/hlapi/v3arch/asyncore/sync/agent/ntforg/common-notifications.html 我的代码目前如下所示:

g = sendNotification(
            SnmpEngine(),
            CommunityData(community_string, mpModel=1),
            UdpTransportTarget((host, 162)),
            ContextData(),
            'trap',
            NotificationType(
                 ObjectIdentity('1.9.9.9.0'),
                 objects={
                     '1.9.9.9.1': 1,
                     '1.9.9.9.8': 'text'
                 }

我的脚本将发送消息,但不发送对象。我的 Wireshark 输出: Wireshark output with a Trap just on the OID 1.9.9.9.0

我还可以做什么来发送我的陷阱消息?我哪里做错了?

替代方案:如果我尝试将“额外”OID 写入函数

.addVarBinds()
,如下所示:

# Assemble MIB viewer
mibBuilder = builder.MibBuilder()
# raw mibs
compiler.addMibCompiler(mibBuilder, sources=['http://mibs.snmplabs.com/asn1/@mib@',
                                                 '/.'])
mibBuilder.loadModules('SNMPv2-MIB', 'SNMP-COMMUNITY-MIB', 'MY-MIB')
mibView = view.MibViewController(mibBuilder)

# send Trap
g = sendNotification(
            SnmpEngine(),
            CommunityData(community_string, mpModel=1),
            UdpTransportTarget((host, 162)),
            ContextData(),
            'trap',
            NotificationType(
                 ObjectIdentity('1.9.9.9.0').addVarBinds(
                     ObjectType(ObjectIdentity('1.9.9.9.1'), Integer(1))
                     ObjectType(ObjectIdentity('1.9.9.9.8'), OctetString("text"))
                 ).resolveWithMib(mibView)

我收到错误并且陷阱未发送:

pysnmp: StatusInformation: {'errorIndication': NotInView('Requested OID is out of MIB view')}

但是解析单个 ObjectType 效果很好:

obj = ObjectType(ObjectIdentity('1.9.9.9.1'), Integer(1))
print(obj.resolveWithMib(mibView))
python snmp pysnmp snmp-trap
1个回答
0
投票

由于您只是想发送消息,所以不需要

.resolveWithMib(mibView)

© www.soinside.com 2019 - 2024. All rights reserved.