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



我正在为我公司现有的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

但CCD_ 5的意思是CCD_。这会让用户错误地查找错误的值并设置错误的内容。

目前我能看到的最好的解决方案是:

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

这涉及到为每个对象定义CCD_ 7(它们中有20个左右)。这组对象是固定的,所以这还可以…只是不太整齐。

  1. 有什么方法可以定义表中索引的名称吗
  2. 有什么方法可以定义容器类型吗
  3. 是否有某种方法允许叶节点是非唯一的

还有其他想法吗?

  1. 您绝对应该使用SNMP表来完成所需的任务。这是唯一的办法。

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

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

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

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

最新更新