我想用net-snmp显示各种MIBS列表,并显示与SNMP树结构相关的其他信息。如何在C/C++中使用net-snmp MIB API列出SMIv1 MIBS?
现在事实证明,我的客户的SMIv1 MIBS没有显示在列表中,但是通过net-snmp正确加载。
示例net-snmp代码遍历内存中的MIB结构,并假定我们在树和树中的MIB和MODULE-IDENTITY注之间存在SMIv2双射。所以当我们找到一个MODULE-IDENTITY节点时,我们找到了一个MIB。
有没有人知道列出SMIv1 MIBS的正确方法是什么net-snmp?(?或任何解决方法)
// 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
}
}
注:我发现了一个转换器smidump(一个命令行工具,或者在http://www.ibr.cs.tu-bs.de/projects/libsmi/tools/作为Web服务),但它并没有增加一个模块IDENTITY节点的MIB 。
编辑:请注意,任何将旧版SNMP MIB转换为更新版本(SMIv2样式)的工具都可以解决此问题。在特定方向上的任何帮助?
一个建议可能是,在没有MODULE-标识符,找到MIB(有时MIB会在许多不同的和无关的地方添加节点所以这是行不通的)的根对象标识符。使用根节点,我可以显示与该MIB相关的大部分树。
感谢您的评论,但这是题外话,太。我实际上是在C/C++中使用net-snmp API加载MIB。 –