2012-09-20 407 views
8

我想讀取管理器擁有的MIB文件中的所有對象。如何從MIB文件中獲取OID?

我開發了一個工具來從啓用了SNMP的代理獲取一些數據。我想通過顯示管理器MIB文件中的所有OID來增強該工具。

我正在使用NET-SNMP庫。

我看到以下內容:

/usr/local/share/snmp/mibs/ 

文件夾,它包含許多MIB文件,但我怎麼能形成它的OID列表?

我經歷了MIB並查看了結構,但是如何獲取MIB文件中提到的每個對象的OID?

我想列出所有的OID如下:

  1. SNMPv2-MIB::sysDescr.0 = .1.3.6.1.2.1.1.1.0
  2. SNMPv2-MIB::sysObjectID.0 = .1.3.6.1.2.1.1.2.0 ...等

我想掃描所有的MIB文件,並找到所有從的OID文件。

我該怎麼做?

回答

5

要從正在運行的SNMP服務器上拉取OID,您可能想使用工具snmpwalk使用-Ci選項。該工具附帶Net-SNMP

+0

感謝您的回覆。 – pradipta

1

另外兩個SO的問題答案告訴你如何能做到這沒有行走在運行的系統:

這只是起點。這裏有很多編碼。

更新:另一個不錯的工具是打包在SNMP :: MIB :: Compiler中的perl SNMP編譯器。通過perl中的腳本,您可以將所有MIB元素/組件拖入內部數據結構,您可以通過查看結構樹或轉儲樹並對轉儲進行後分析來從中選擇任何信息。

+1

感謝您的回答... – pradipta

9

使用snmptranslate -command net-snmp庫。嘗試使用以下參數:

-M "directory containing your MIB file" 
-m ALL 
-Pu 
-Tso 
4

在出現一些問題後,我設法使用以下命令生成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