我正在制作网络设备监视器。其中一部分是PHP前端,用户可以输入他感兴趣的SNMP值(SNMP OID)。我想简化用户的流程,因此我想创建一个简单的MIB浏览器,允许用户从树中选择值。解析SNMP MIB文件(OID翻译)
问题是将MIB文件从数据库中读取(或者至少是类似于XML的格式),然后将它们呈现给用户。即时解析MIB文件对我来说似乎很浪费,因此排除了PHP的snmp_read_mib() - 除非我可以读取MIB一次并将OID转换保存到数据库?
此外,我想避免编写我自己的解析器,如果可能的话。 :)
我发现libsmi,但我不知道如何使用它的这种情况下...我尝试使用smidump,但只能创建一些简短的XML没有有用的内容。尽管我没有尝试使用xmldump,因为它在Debian上不可用(作为包),并且必须从源代码构建它。另外,我认为它是从2005年开始的。它会有帮助吗?
所以问题是:如何从MIB文件中读取OID名称和/或其他数据(SNMP陷阱信息)并将它们转换为某种随时可用的格式?
你写了关于“...读取MIB一次,并保存OID翻译...”与我认为是怀疑;你担心你会溢出内存吗? MIB - 或者至少对你很重要的部分 - 可能相当小。我不会感到惊讶,你可以简单地将它们保留在表示树的PHP变量中。 *我*会在那里开始我的实验。在任何情况下,这将远离PHP编码的第一个MIB浏览器... –
不,这不是怀疑 - 我没有看到从MIB文件中获取所有可能的OID转换的方法(只是函数来翻译已知的单个奥迪斯/名)。我在这里错过了什么吗?顺便说一句:我需要浏览可能的值,而不是设备上的值...我希望这是有道理的。 :) – johndodo
johndodo,我们可能会混淆对方。在回复时,我想强调一下:PHP编码的MIB浏览器已经可用,并且可能会让您感兴趣。除此之外,我只是建议您走完整个MIB并保留所有可能对您有用的数据。你想要那样做的代码吗? –