首先,我得说我不是一个傻瓜专家,几周前我在闲暇时间开始在公司系统中实施新功能。
我复制贴了我在这里找到的答案
from pysnmp.hlapi import *
from pysnmp import debug
debug.setLogger(debug.Debug('msgproc'))
next(sendNotification(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('192.168.1.92',162)),
ContextData(),
'trap',
[ObjectType(ObjectIdentity('1.3.6.1.2.7.8'), Integer32(5)),
ObjectType(ObjectIdentity('1.3.6.6.7'),Integer32(45))]
)
)
我的接收器捕获4个varbinds而不仅仅是我指定的2个,调试显示下一个
2017-03-24 09:07:53,015 pysnmp: running pysnmp version 4.3.4
2017-03-24 09:07:53,016 pysnmp: debug category 'msgproc' enabled
2017-03-24 09:07:54,115 pysnmp: StatusInformation: {'errorIndication': <pysnmp.proto.errind.AccessAllowed object at 0x762eb170>}
2017-03-24 09:07:54,116 pysnmp: StatusInformation: {'errorIndication': <pysnmp.proto.errind.AccessAllowed object at 0x762eb170>}
2017-03-24 09:07:54,120 pysnmp: prepareOutgoingMessage: using contextEngineId SnmpEngineID() contextName b''
2017-03-24 09:07:54,123 pysnmp: generateRequestMsg: Message:
version=1
community=public
data=PDUs:
snmpV2-trap=SNMPv2TrapPDU:
request-id=10292983
error-status='noError'
error-index=0
variable-bindings=VarBindList:
VarBind:
name=1.3.6.1.2.1.1.3.0
=_BindValue:
value=ObjectSyntax:
application-wide=ApplicationSyntax:
timeticks-value=0
VarBind:
name=1.3.6.1.6.3.1.1.4.1.0
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
objectID-value=1.3.6.1.6.3.1.1.5.1
VarBind:
name=1.3.6.1.2.7.8
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
integer-value=5
VarBind:
name=1.3.6.6.7
=_BindValue:
value=ObjectSyntax:
simple=SimpleSyntax:
integer-value=45
我得到的问题是我真的不知道前两个OIDS的含义是什么。
**1.3.6.1.2.1.1.3.0 = 0
1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.6.3.1.1.5.1**
1.3.6.1.2.7.8 = 5
1.3.6.6.7 = 45
看起来好像他们是snmpv2-mib的OID,但我不确定。
提前致谢,
卡洛斯
答案 0 :(得分:0)
因此,您发送的是SNMPv2 TRAP(CommunityData(mpModel=1)暗示)。根据{{3}}的第4.2.6章:
变量绑定列表中的前两个变量绑定 SNMPv2-Trap-PDU是sysUpTime.0和snmpTrapOID.0 分别。
由于您自己没有提供这些,pysnmp会自动添加它们以生成格式良好的PDU。
请注意,根据您发送的TRAP的ID,pysnmp可能会尝试根据RFC要求查找并附加更多OID值对作为var-binds:
如果调用中存在OBJECTS子句 相应的NOTIFICATION-TYPE宏,然后各自对应 变量,由此通知实例化,按顺序复制, 到变量绑定字段。
您可以传递查找地图(RFC1905)来初始化这些OBJECTS OID。否则pysnmp将在其本地MIB中搜索它们。
最后,您明确传递的OID属于RFC的这一部分:
如果包含任何其他变量(可选择 生成SNMPv2实体),然后将每个复制到变量绑定 字段。