2012-11-14 36 views
2

最近我們爲NMS系統製作了MIB文件,這樣做後我在Linux機器上部署MIB來查詢它後,發現我需要在最後添加101.1,在那裏只有標準Linux mib .0需要附加。我無法理解這一點,爲什麼我的價值在101.1而不是.0。關於SNMP的查詢獲得

例如,當我這樣做與Linux的MIB我得到的值

snmpget -v 2c -c public localhost 1.3.6.1.2.1.1.3.0 
SNMPv2-MIB::sysUpTime.0 = Timeticks: (105543) 0:17:35.43 

但我的MIB工作,我需要追加101.1

當我做我的MIB散步我得到以下。

snmpwalk -v 2c localhost -c public .1.3.6.1.4.1.****.1.2.3 

SNMPv2-SMI::enterprises.****.1.2.3.1.1 = INTEGER: 1 
SNMPv2-SMI::enterprises.****.1.2.3.2.1 = STRING: "getSystemMemoryUsage.sh" 
SNMPv2-SMI::enterprises.****.1.2.3.3.1 = STRING: 
"/opt/nagios/plugins/fetch_scripts/System/getSystemMemoryUsage.sh" 
SNMPv2-SMI::enterprises.****.1.2.3.100.1 = INTEGER: 0 
SNMPv2-SMI::enterprises.****.1.2.3.101.1 = STRING: "388 MB" 
SNMPv2-SMI::enterprises.****.1.2.3.102.1 = INTEGER: 0 
SNMPv2-SMI::enterprises.****.1.2.3.103.1 = "" 

可以在任何一個建議,爲什麼這樣的行爲在我們的MIB,哪些需要做使我的MIB Linux類似的表現MIB的,我只是在末尾添加1.0和獲得的價值。 對象類型是所有人的標量。

感謝大家提前

回答

4

的MIB命名支持表示爲表格的行和非表格標量數據。通過使用OID.0索引來訪問作爲標量呈現的數據。 「.0」部分表示對標量對象的訪問 - 系統中的單個對象實例。這些表包含列(每列代表某種數據)和行(每行代表一個表實例 - 支持該表的某種實體)。

在您的示例中,您嘗試訪問企業MIB中的某個表。該表包含一個索引(可能有單個或多個索引MIB表)。爲了確定該表中第一個可用的索引,你可以在下面的方式與snmpgetnext命令啓動:

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3 

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0 

snmpgetnext -v2c -c public localhost .1.3.6.1.4.1.****.1.2.3.0.0 

正如你可以看到上面的命令通過更新兩個最後的OID部分(.0.0)爲您提供第一個現有的行實例。這兩個OID不必顯式指定,因此您可以只使用一個空索引(.0),甚至不必指定它們。

要了解如何描述這些表的索引,您需要引用您的企業MIB - 查找由此OID描述的表:.1.3.6.1.4.1。 * * .1.2.3瞭解索引方案,以及這些索引代表什麼。寫得好的MIB應該包含這些信息。

解讀可以如下:

  • * .1.1 = 1 - 與ID = 1的數據列實體索引1
  • * .2.1 = 「getSystemMemoryUsage.sh」 - 數據與ID = 2列表示腳本名稱的實體索引1(STRING語法)
  • * .3.1 =「/opt/nagios/plugins/fetch_scripts/System/getSystemMemoryUsage.sh」 - 表示完整腳本路徑的實體索引1的id爲3的數據列STRING語法)
  • * .100。1 = 0 - 使用id = 100個數據欄用於表示某個整數值 等實體索引1 ...

列索引(0.1,0.2,0.3,0.100,0.101 .. )如果MIB設計者希望將來在.3和.100之間添加一些列,可能會包含差距。或者只是實體索引1不支持這些列(如果它們是在MIB中定義的)。允許跳過空列。

如果您想了解標量和柱狀物體之間的差異,請參閱RFC1212