经理需要知道要查询特定内容的变量。变量可以通过 OID 或 MIB 对象名称来标识。
MIB 提供 Manager 信息,例如:
- 与 OID 关联的人类友好符号名称
- 与特定 OID 关联的值类型
- 代理实现的可变访问权限的提示
- SNMP 表索引结构和类型
- 对其他 MIB 对象的引用(例如通知)
如果 MIB 可用,Manager 将能够执行任何 SNMP 操作,知道它感兴趣的代理变量的符号名称或 OID。所有需要的详细信息都将从 MIB 中收集。
如果 MIB 不可用,Manager 仍然需要找出更多或更少的附加细节(一些在上面列出),以便将这些信息硬编码到 Manager。
例如,可以仅使用 OID 执行 GET 操作,但是如果没有 MIB 管理器,则可能无法使响应值看起来对人类友好。
另一个例子是需要 Manager 正确编码值的 SET 操作——它的类型可以在 MIB 中动态查找或硬编码到 Manager 中以获取特定的 OID。
更复杂的场景涉及使用 MIB 正式定义的索引结构动态构建 OID(用于寻址 SNMP 表条目)。
GETNEXT/GETBULK 查询的目的是让 Manager 不知道 Agent 提供的确切 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 支持的 Python 类的集合MIB 对象。