Snmp 从现有OID自动检测PySMI解析的MIB

Snmp 从现有OID自动检测PySMI解析的MIB,snmp,pysnmp,mib,Snmp,Pysnmp,Mib,我遇到的情况是,我试图在云中预先存在的、未翻译的SNMP漫游上执行一些MIB处理。我有一组经过翻译的PySMI-MIB-json文件,但我不确定如何将正确的MIB与walk中的OID匹配 我看到PySNMP无法自动检测MIB,但它正在工作。我尝试自己使用regex创建一个简单的实现,但是我找不到MIB的模块标识和我从SNMP walk中检索的oid之间的关联 我已经看到了可以从PySMI生成的MIB索引,这似乎很有希望,但我不确定如何使用它从MIB文件集合中找到OID的人类可读版本 我错过了什么

我遇到的情况是,我试图在云中预先存在的、未翻译的SNMP漫游上执行一些MIB处理。我有一组经过翻译的PySMI-MIB-json文件,但我不确定如何将正确的MIB与walk中的OID匹配

我看到PySNMP无法自动检测MIB,但它正在工作。我尝试自己使用regex创建一个简单的实现,但是我找不到MIB的模块标识和我从SNMP walk中检索的oid之间的关联

我已经看到了可以从PySMI生成的MIB索引,这似乎很有希望,但我不确定如何使用它从MIB文件集合中找到OID的人类可读版本


我错过了什么?谢谢

解决这个问题的一种方法是通过在整个MIB集合上运行基于PySMI的脚本(或者仅仅是普通工具)来构建OID->MIB索引。实际上,这样的索引是可以找到的

一旦有了这个OID->MIB映射,就可以运行snmpwalk脚本接收的OID,将它们(或它们的前缀)与OID->MIB映射匹配,并加载所需的MIB


不幸的是,这个相对简单的过程还没有内置到pysnmp中,但在脚本中实现应该并不困难。

正是这样。对于基于C++的SNMP代理,我有一个预构建步骤,[Base]基本上是<代码> MIbDUP ,并使用结果生成C++映射,将您从数值类OID转换为对象名称。我不需要知道对象是在哪个MIB中定义的,但是可以用同样的方法将这些信息添加到映射中。最终,这只是解析cmdline工具的输出的问题;我相信我在Python中使用了一两个正则表达式(这不是OP的用例;我希望我的代理在构建时“加载MIB”,这样我就不必重新实现其中的所有信息。但最终结果是一样的。)我不确定我是否正确理解了您的问题,您的问题现在已经解决了。如果没有,让我们重申一下什么对你不起作用你把我和OP搞混了吗?OP不是这么回事,只是措辞让我不确定你是否解决了最初的问题。