麻烦用PySNMP抓住MIB

时间:2014-11-22 19:06:19

标签: python snmp conceptual mib pysnmp

我是SNMP协议的新手,最近才在我的计算机网络课程中介绍过它。

我理解经理如何发送Get,Sets,GetNext,GetBulk以及所有这些,它会捕获陷阱等。我不能完全理解的一件事是MIB

从我收集的内容来看,MIB在代理上是chillen,而Manager将查询MIB树。这很好,虽然Manager需要OID才能正确查询。我有一个问题,如果这些是硬编码的话。 OID是否在经理中硬编码?

除此之外,我不确定如何构建MIB文件,显然有一些特殊的文件类型定义了MIB结构,我真的不知道如何使用pySNMP来构建它。我觉得我会在启动时在代理方面运行它

有人可以帮我解决这些概念问题吗?

1 个答案:

答案 0 :(得分:0)

管理员需要知道要查询特定内容的变量。变量可以通过OID或MIB对象名称来识别。

MIB提供经理信息,例如:

  • 与OID相关的人性化符号名称
  • 与特定OID关联的值的类型
  • 提供由代理
  • 实施的变量访问权限的提示
  • SNMP表索引结构和类型
  • 对其他MIB对象的引用(例如通知)

如果MIB可用,Manager将能够执行任何SNMP操作,知道它感兴趣的代理变量的符号名称或OID。所有必需的详细信息将从MIB收集。

如果MIB不可用,管理员仍然需要弄清楚或多或少的其他细节(一些在上面列出),以便可以将这些细节硬编码到管理器。

例如,可以仅使用OID执行GET操作,但是如果没有MIB管理器可能会使响应值看起来很人性化。

另一个例子是SET操作,要求Manager正确编码值 - 可以在MIB上动态查找其类型,或者为特定OID硬编码到Manager中。

更复杂的方案涉及使用由MIB正式定义的索引结构动态构建OID(用于寻址SNMP表条目)。

GETNEXT / GETBULK查询的目的是让Manager不知道代理提供的确切OID集。因此,Manager可以从众所周知的OID(甚至是它的前缀)开始迭代Agent的变量。此功能的一个用途是SNMP表检索。

MIB是用ASN.1语言的子集编写的。与ASN.1不同,MIB非常特定于SNMP域。

要将MIB与pysnmp一起使用,您需要将ASN.1 MIB传递给 build-pysnmp-mib shell脚本(来自pysnmp发行版),该脚本将调用 smidump 和其他用于将ASN.1 MIB转换为表示pysnmp支持的MIB对象的Python类集合的工具。