我们正在尝试使用自定义MIB使用PYSNMP模块发送自定义SNMP通知,但是当它发送通知时,我们也会收到DISMAN-EVENT-MIB :: sysUpTimeInstance事件作为通知的一部分。我们希望避免相同的情况。 以下是示例脚本
from pysnmp.entity.rfc3413.oneliner import ntforg
ntfOrg = ntforg.NotificationOriginator()
errorIndication, errorStatus, errorIndex, varBinds = ntfOrg.sendNotification(
ntforg.CommunityData('public'),
ntforg.UdpTransportTarget(('localhost', 162)),
'inform',
ntforg.MibVariable('SNMPv2-MIB', 'sysDescr'),
( ntforg.MibVariable('SNMPv2-MIB', 'sysDescr', 0), 'Hello' ),
lookupNames=True, lookupValues=True
)
if errorIndication:
print('Notification not sent: %s' % errorIndication)
elif errorStatus:
print('Notification Receiver returned error: %s @%s' %
(errorStatus, errorIndex))
else:
for name, val in varBinds:
print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
以下是我在/ var / log / messages
中的内容Jun 1 18:56:14 localhost snmptrapd[1194]: 2015-06-01 18:56:14 localhost [UDP: [127.0.0.1]:56469->[127.0.0.1]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::sysDescr SNMPv2-MIB::sysDescr.0 = STRING: Hello
所以我们如何避免不发送DISMAN-Event作为其中的一部分。
答案 0 :(得分:1)
格式良好的SNMP v2c / v3通知必须在其var-bindings列表的开头包含两个特定的OID。那些OID是sysUpTime和snmpTrapOID。如果你把它们遗漏,这将违反协议。所以pysnmp会将这些OID添加到PDU中。
如果可以发送格式错误的数据包,您有两种选择:
这两个API都允许您使用您认为适合的任何变量绑定发送自己的PDU。