我想用net-snmp显示各种 MIBS 的列表,并显示与 SNMP 树结构相关的其他信息。
现在事实证明,我的客户的 SMIv1 MIBS 没有出现在列表中,但被net-snmp正确加载。
示例net-snmp代码遍历内存中的 MIB 结构,并假设我们在树中的 MIB 和 MODULE-IDENTITY 注释之间具有 SMIv2 双射。所以当我们找到一个 MODULE-IDENTITY 节点时,我们找到了一个 MIB。
有谁知道使用net-snmp列出 SMIv1 MIBS 的正确方法是什么?(或任何解决方法?)
// Read mibs and obtain memory structures
struct tree * head = read_all_mibs();
// Walk down the SNMP tree
for ( struct tree * tp = head; tp; tp = tp->next_peer )
{
// Module-indentity
if ( tp->type == TYPE_MODID )
{
// XXX We found a SMIv2 MIB, but SMIv1 MIBs have no MODULE-IDENTITY node
}
}
注意:我在http://www.ibr.cs.tu-bs.de/projects/libsmi/tools/找到了一个转换器smidump(一个命令行工具,或作为 Web 服务),但它没有添加 MODULE- MIB 的 IDENTITY 节点。
编辑:请注意,任何将旧的 SNMP MIB 转换为更新的(SMIv2 样式)的工具都可以解决问题。在那个特定方向上有什么帮助吗?
一个建议可能是,在没有 MODULE-IDENTIFIER 的情况下,找到 MIB 的根OBJECT-IDENTIFIER(有时 MIB 会在许多不同且不相关的地方添加节点,因此这不起作用)。使用根节点,我可以显示与该 MIB 相关的大部分树。