我正在为我公司现有的SNMP MIB编写一个扩展。我有一个完整的对象列表,每个对象都有相同的属性。我希望能够通过SNMP获取和设置这些。
例如,假设我的对象有name
、desc
、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
但CCD_ 5的意思是CCD_。这会让用户错误地查找错误的值并设置错误的内容。
目前我能看到的最好的解决方案是:
fullpath.objects.ObjectAName
fullpath.objects.ObjectADesc
fullpath.objects.ObjectAArg0
fullpath.objects.ObjectBName
fullpath.objects.ObjectBDesc
fullpath.objects.ObjectBArg0
这涉及到为每个对象定义CCD_ 7(它们中有20个左右)。这组对象是固定的,所以这还可以…只是不太整齐。
- 有什么方法可以定义表中索引的名称吗
- 有什么方法可以定义容器类型吗
- 是否有某种方法允许叶节点是非唯一的
还有其他想法吗?
-
您绝对应该使用SNMP表来完成所需的任务。这是唯一的办法。
-
MIB对象名称在整个MIB文件中必须是唯一的。
-
您可以很容易地使用
OCTET STRING
类型的对象作为表索引。因此,OCTET STRING
值的每个字节/符号/字符将被转换为OID
中相应的数字ASCII代码。
我最终只使用了一个命名约定,并将每个设置直接添加到MIB中。
这并不是我想要的答案,但这意味着所有的设置都会显示在MIB中,这减少了用户设置错误设置的机会。