2016-11-01 202 views
0

我在写一个python应用程序,它应该使用Opendaylight SNMP Plugin REST API(http://IPAddress:8181/restconf/operations/snmp:snmp-get)从运行snmp代理的网络设备获取一些信息。如何在Opendaylight SNMP插件中添加自定义MIB?

我模拟的设置如下:

环境

  • SNMP代理程序:Ubuntu的VM上运行。
  • SNMP管理器:一个运行在Opendaylight之上的Python应用程序。

做了什么

获取信息,如总RAM(OID:.1.3.6.1.4.1.2021.4.5.0)我需要添加UCD-SNMP-MIB.mib到opendaylight所以了解对象类型和ID。

我已经签出这page但我似乎无法使其工作。该页面中的教程看起来过时了,它解释了如何创建本地opendaylight项目,而我的目标是使用北向API。

问题: 我们如何添加自定义MIB文件opendaylight目录,这样应用程序可以使用REST API来管理在网络上的SNMP代理?

回答

0

odl-snmp-plugin没有任何直接使用MIB文件的功能。

诸如snmp-get之类的通用RPC只会获取OID值并返回OID /值对的JSON文档。

POST :host/restconf/operations/snmp:snmp-get 
Authentication: :basic-auth 
Content-Type: application/json 
{ 
    "input": { 
     "ip-address": ":addr", 
     "oid" : "1.3.6.1.2.1.2.2.1", 
     "get-type" : "GET-BULK", 
     "community" : ":community" 
    } 
} 

{ 
    "output": { 
    "results": [ 
     { 
     "oid": "1.3.6.1.2.1.2.2.1.1.1", 
     "value": "1" 
     }, 
     { 
     "oid": "1.3.6.1.2.1.2.2.1.1.2", 
     "value": "2" 
     }, 
     ... 
    ] 
    } 
} 

该模块如得到的接口特定的RPC依赖于两个先决条件:

  1. 甲杨文件已经从所需的MIB
  2. 甲.oid文件,其中包含从MIB名称映射生成到OID,用于yang-oid-plugin。

通过这些先决条件,您可以编写一个Maven POM文件,该文件将生成包含OID注释的Java代码。这旨在让您使用支持Java绑定的API来获取使用SNMP数据填充的Java对象。

OpenDaylight snmp项目是一个完整的示例,介绍如何执行此操作。

在这里看到产生从IF-MIB的示例YANG文件:https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/yang/IF-MIB.yang

参见这里的一个例子.oid文件,也从IF-MIB生成:都需要实现 https://github.com/opendaylight/snmp/blob/master/mibs-model/src/main/oid/IF-MIB.oid

进一步的步骤一个通过NETCONF或RESTCONF公开的解决方案。一个简单的方法是像odl-snmp-plugin那样添加和硬编码RPC。更复杂的解决方案需要挂载设备的概念,就像odl-netconf连接器一样,扩展拓扑以存储设备的SNMP凭据,然后编写一个连接器,将支持SNMP的YANG模块安装在拓扑节点下设备。