【问题标题】:Sending SNMP Traps containing custom data发送包含自定义数据的 SNMP 陷阱
【发布时间】:2016-04-11 19:57:28
【问题描述】:

客户要求我们将 SNMP 陷阱发送到他们的 Nagios 服务器,而不是电子邮件警报。昨天我对 SNMP 的唯一了解是它听起来像是一个首字母缩略词,所以请原谅(并纠正我)我可能对它的任何误解。

需要在陷阱中发送的唯一信息是关于我们向客户发出警报的事件的数据,这只是从我们的数据库中提取的几个值。不用说这些不在任何类型的 MIB 中,也没有任何 OID,这就是我无法找到答案的地方。

如果不使用我没有的 MIB OID,我无法弄清楚如何将我们的特定数据添加到陷阱中。

我正在使用 PySNMP 生成请求,现在只有不完整的代码,因为我不确定如何将我们的数据合并到数据包中。

from pysnmp.hlapi import *

def sendSNMP(destination, community_string, data):
    community = CommunityData(community_string, mpModel = 0)
    target = UdpTransportTarget((destination, 162))
    notification_type = None
    req = sendNotification(SnmpEngine(), community, target, ContextData(), 'trap', notification_type)
    errorIndication, errorStatus, errorIndex, varBinds = next(req)

感谢任何帮助!谢谢。

【问题讨论】:

    标签: python snmp mib pysnmp


    【解决方案1】:

    一般来说,SNMP 陷阱内容结构良好,便于随机系统之间的数据交换。内容由 MIB 以相当繁琐的方式定义。但是,如果您正在构建一个临时的自定义系统,那么没有什么能阻止您将任何 OID 值塞进陷阱中。

    示例代码(启用调试以提示您发送的内容):

    from pysnmp.hlapi import *
    from pysnmp import debug
    
    debug.setLogger(debug.Debug('msgproc'))
    
    next(sendNotification(SnmpEngine(),
         CommunityData('public'),
         UdpTransportTarget(('demo.snmplabs.com', 162)),
         ContextData(),
         'trap',
         # sequence of custom OID-value pairs
         [ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), OctetString('my string')),
          ObjectType(ObjectIdentity('1.3.6.1.2.1.1.3.0'), Integer32(42))]))
    

    【讨论】:

      【解决方案2】:

      在纯技术层面上,您可以将任何 OID 用于任何目的。但是,SNMP 被设计为委员会管理的协议。

      如果您的陷阱或其 varbind 不符合标准消息/类型,您的 OID 应以 1.3.6.1.4.1.YOUR_ENTERPRISE_NUMBER 开头。如果您的公司或您的客户没有注册的私营企业编号 (PEN),您可以免费 request one from IANA。如果有人在管理您的 PEN,您应该向他们索要您产品域的 OID。

      PEN list 充满了个人的电子邮件地址。在这个系统中有一个行业级别的信任元素。与控制竞争对手企业编号的人合作并不罕见。如果您为 PEN 承担责任,那么您就承担了随之而来的道德责任。

      您不必为企业范围编写或发布 MIB,尽管您可能希望为客户的利益编写 MIB。

      SNMP 是一个旧协议。首选替换是NETCONF,或者我被告知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多