【发布时间】:2011-09-28 11:51:53
【问题描述】:
我正在制作网络设备监视器。其中一部分是 PHP 前端,用户可以在其中输入他感兴趣的 SNMP 值(SNMP OID)。我想让用户的过程更简单,所以我想创建一个简单的 MIB 浏览器,允许用户从树中选择值。
问题是将 MIB 文件读取到数据库(或至少类似 XML 的格式)中,我可以将它们呈现给用户。动态解析 MIB 文件对我来说似乎很浪费,因此排除了 PHP 的 snmp_read_mib() - 除非我可以读取一次 MIB 并将 OID 转换保存到 DB?
另外,如果可能的话,我想避免编写自己的解析器。 :)
我找到了 libsmi,但我不确定如何在这种情况下使用它...我尝试使用 smidump,但只能创建一些没有有用内容的短 XML。不过,我还没有尝试 xmldump,因为它在 Debian(作为包)上不可用,并且必须从源代码构建它。另外,我想是 2005 年的。会有帮助吗?
所以问题是:如何从 MIB 文件中读取 OID 名称和/或其他数据(SNMP 陷阱信息)并将它们转换为一些现成的格式?
【问题讨论】:
-
你写了关于“......读一次 MIB 并保存 OID 翻译......”,我认为这是怀疑的;你担心你会溢出内存吗? MIB——或者至少是对你很重要的部分——可能相当小。您可以简单地将它们保存在代表树的 PHP 变量中,这不会让我感到惊讶。 我会在那里开始我的实验。无论如何,这与第一个用 PHP 编码的 MIB 浏览器相去甚远……
-
不,这不是怀疑 - 我看不到从 MIB 文件中获取所有可能的 OID 翻译的方法(只是翻译已知的单个 ODI/名称的函数)。我在这里错过了什么吗?顺便说一句:我需要浏览可能的值,而不是设备上的值......我希望它有意义。 :)
-
johndodo,我们可能会互相混淆。作为回复,我想强调:PHP 编码的 MIB 浏览器已经可用,您可能会感兴趣。除此之外,我只是建议您遍历整个 MIB 并保留所有可能对您很重要的数据。你想要这样的代码吗?
-
Cameron,无论是一个可用的 PHP 编码的 MIB 浏览器(我找不到任何浏览器)或一个关于如何在 PHP 中遍历整个 MIB 的示例(找不到方法)都会很棒!不过我更喜欢后者。 ;)
-
我知道我们在哪里可能会相互误解 - 我想知道 MIB file 中的所有可能值,而不需要查询设备。 AFAIK PHP SNMP 函数不允许这样做?