我是SNMP协议的新手,最近才在我的计算机网络课程中介绍过它。
我理解经理如何发送Get,Sets,GetNext,GetBulk以及所有这些,它会捕获陷阱等。我不能完全理解的一件事是MIB
从我收集的内容来看,MIB在代理上是chillen,而Manager将查询MIB树。这很好,虽然Manager需要OID才能正确查询。我有一个问题,如果这些是硬编码的话。 OID是否在经理中硬编码?
除此之外,我不确定如何构建MIB文件,显然有一些特殊的文件类型定义了MIB结构,我真的不知道如何使用pySNMP来构建它。我觉得我会在启动时在代理方面运行它
有人可以帮我解决这些概念问题吗?
答案 0 :(得分:0)
管理员需要知道要查询特定内容的变量。变量可以通过OID或MIB对象名称来识别。
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类集合的工具。