我正在编写一个python应用程序,它应该使用Opendaylight SNMP插件REST API(http://IPAddress:8181/restconf/operations/snmp:snmp-get)从运行snmp代理的网络设备获取一些信息。
我按如下方式模拟设置:
环境
已完成的工作
要获取总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 :(得分: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(如get-interfaces)依赖于两个先决条件:
通过这些先决条件,您可以编写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-connector那样,您可以在其中扩展拓扑以存储设备的SNMP凭据,然后编写一个连接器,在拓扑节点下安装支持SNMP的YANG模块。设备