具有非唯一节点名称的SNMP OID

时间:2015-12-10 11:14:00

标签: snmp mib

我正在为公司现有的SNMP MIB编写扩展程序。我有一个完整的对象列表,每个对象具有相同的属性。我希望能够通过SNMP获取和设置这些内容。

例如,考虑我的对象有namedescarg0arg1。我想要的是能够将它们称为:

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. 是否有某种方法允许叶子节点不唯一?
  4. 还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

  1. 您绝对应该使用SNMP表来完成所需的操作。这是唯一的方法。

  2. 在整个MIB文件中,MIB对象名称必须是唯一的

  3. 您可以轻松地使用OCTET STRING类型的对象作为表索引。因此,OCTET STRING值的每个字节/符号/字符将转换为OID中对应的数字ASCII码

答案 1 :(得分:0)

我最终只是使用命名约定并将每个设置直接添加到MIB中。

不是我想要的答案,但这意味着所有设置都显示在MIB中,这减少了用户设置错误设置的机会。