【问题标题】:parsing SNMP MIB files (OID translation)解析 SNMP MIB 文件(OID 转换)
【发布时间】: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 函数不允许这样做?

标签: php snmp oid mib


【解决方案1】:

我最终使用了Mibble - 我编写了一个小程序,它使用这个库来解析 MIB 并输出数据。非常简单,似乎工作得很好。

不过,还是感谢你们俩的帮助 - 我很感激!

【讨论】:

  • johndodo,感谢 报告您的体验。您说得对,我的阅读很粗心,并且没有意识到您是在使用 file 而不是 LDAP 实例。我很高兴听到您的 Mibble 方法是成功的。
【解决方案2】:
smidump -f identifiers <MIB_filename>

如果 MIB 的语法不符合标准,请使用

smilint -ms <MIB_filename>

这应该让你开始

【讨论】:

  • 谢谢,但这只是打印“由于严重的解析错误而中止”(在 ExtremeNetwork 的 MIB 上测试:extremenetworks.com/libraries/services/v762b3.mib),开关“-k”无济于事...... smilint 也会返回错误,所以我猜 MIB 是不正确的。但是,我仍然需要解析它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多