2015-12-10 50 views
0

我正在爲我公司現有的SNMP MIB編寫擴展。我有一個完整的對象列表,每個對象具有相同的屬性。我希望能夠通過SNMP獲取並設置它們。具有非唯一節點名稱的SNMP OID

因此,例如,考慮我的對象有namedesc,arg0,arg1。我想要的是可以參考這些:

fullpath.objects.ObjectA.name 
fullpath.objects.ObjectA.desc 
fullpath.objects.ObjectA.arg0 
fullpath.objects.ObjectB.name 
fullpath.objects.ObjectB.desc 
fullpath.objects.ObjectB.arg0 

然而,葉節點似乎必須具有唯一的名稱,所以我無法定義這個。

我可以使用SNMP表產生:

fullpath.objects.table.name.1 
fullpath.objects.table.desc.1 
fullpath.objects.table.arg0.1 
fullpath.objects.table.name.2 
fullpath.objects.table.desc.2 
fullpath.objects.table.arg0.2 

但有無處查找該2意味着ObjectB。這會讓用戶錯誤查找錯誤的值並設置錯誤的東西。

目前最好的解決方案,我可以看到的是:

fullpath.objects.ObjectAName 
fullpath.objects.ObjectADesc 
fullpath.objects.ObjectAArg0 
fullpath.objects.ObjectBName 
fullpath.objects.ObjectBDesc 
fullpath.objects.ObjectBArg0 

其中包括爲每個對象定義name(有20個左右的人)。這組對象是固定的,所以這沒關係......只是不夠整齊。

  1. 是否有某種方法來定義表中的索引名稱?
  2. 是否有某種定義容器類型的方法?
  3. 是否有某種方式允許葉節點是非唯一的?

還有其他想法嗎?

回答

0
  1. 您應該使用SNMP表來完成所需的操作。這是唯一的方法。

  2. MIB對象名稱在整個MIB文件中必須是唯一的

  3. 您可以很容易地使用OCTET STRING類型的對象作爲表索引。因此OCTET STRING值的每個字節/符號/字符將被轉換爲對應的數字ASCII碼OID

0

我結束了剛剛使用命名約定,並將每個設置直接添加到MIB中。

不是我想要的答案,但它意味着所有設置都顯示在MIB中,並且減少了用戶設置錯誤設置的機會。