我想读取经理所拥有的MIB文件中的所有对象。
我开发了一个工具来从启用SNMP的代理中获取一些数据。我想通过显示管理器的MIB文件中的所有OID来增强该工具。
我正在使用NET-SNMP库。
我看到了以下内容:
/usr/local/share/snmp/mibs/
文件夹,它包含许多MIB文件,但我如何形成它拥有的OID列表?
我浏览了MIB并查看了结构,但是如何获取MIB文件中提到的每个对象的OID?
我想列出所有OID,如下所示:
SNMPv2-MIB::sysDescr.0 = .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysObjectID.0 = .1.3.6.1.2.1.1.2.0
......等等。我想扫描所有MIB文件并找到文件中的所有OID。
我该怎么做?
答案 0 :(得分:11)
使用snmptranslate
- 来自net-snmp
库的命令。请使用以下参数进行尝试:
-M "directory containing your MIB file"
-m ALL
-Pu
-Tso
答案 1 :(得分:5)
要从正在运行的OID
服务器中提取SNMP
,您可以使用snmpwalk
选项使用工具-Ci
。该工具附带Net-SNMP
。
答案 2 :(得分:5)
在遇到一些问题后,我设法使用以下命令生成OID。
snmptranslate -Pu -Tz -M ~/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp:`pwd` -m module_name_NOT_file_name > module_name.oid
答案 3 :(得分:1)
另外两个SO QAs显示了如何在不运行正在运行的系统的情况下完成它:
“net-snmp sample code to parse MIB file and extract trap related information from it”:The answer显示了基于Net-SNMP库顶部的C解析器的顶级框架。
“Get oid's type (syntax) from MIB using Net-SNMP API”:这是处理OID的特定功能。
这只是一个起点。那里有很多编码。
更新:另一个不错的工具是打包在SNMP :: MIB :: Compiler中的perl SNMP编译器。使用perl中的脚本,您可以将所有MIB元素/组件拉入内部数据结构,并且可以从中查找任何信息,方法是查看结构树或转储树并在转储上进行后解析。