PYSNMP自定义陷阱发送器,哪些是额外的oids?

时间:2017-03-24 11:24:51

标签: python raspberry-pi pysnmp

首先,我得说我不是一个傻瓜专家,几周前我在闲暇时间开始在公司系统中实施新功能。

我复制贴了我在这里找到的答案

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,但我不确定。

提前致谢,

卡洛斯

1 个答案:

答案 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实体),然后将每个复制到变量绑定   字段。