我正在为公司现有的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
但无处可查,2
表示ObjectB
。这使得用户在查找错误的值并设置错误的内容时会出错。
目前我能看到的最佳解决方案是:
fullpath.objects.ObjectAName
fullpath.objects.ObjectADesc
fullpath.objects.ObjectAArg0
fullpath.objects.ObjectBName
fullpath.objects.ObjectBDesc
fullpath.objects.ObjectBArg0
涉及为每个对象定义name
(其中有20个左右)。这组对象是固定的,所以这没关系......只是不太整洁。
还有其他想法吗?
答案 0 :(得分:0)
您绝对应该使用SNMP表来完成所需的操作。这是唯一的方法。
在整个MIB文件中,MIB对象名称必须是唯一的。
您可以轻松地使用OCTET STRING
类型的对象作为表索引。因此,OCTET STRING
值的每个字节/符号/字符将转换为OID
中对应的数字ASCII码。
答案 1 :(得分:0)
我最终只是使用命名约定并将每个设置直接添加到MIB中。
不是我想要的答案,但这意味着所有设置都显示在MIB中,这减少了用户设置错误设置的机会。