2014-11-22 97 views
0

我对SNMP协议相当陌生,最近才在我的计算机网络课程中介绍过它。用PySNMP抓取MIB问题

我明白经理如何发送Get,Set,GetNext,GetBulk等等,它会捕获Traps等。我不完全理解的一点是MIB从我所收集的信息中找出代理上的MIB,然后Manager将查询MIB树。这很好,尽管Manager需要OID才能正确查询。我有一个问题,如果这些是硬编码或不。 OID是否在经理中硬编码?

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

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

回答

0

经理需要知道变量以查询特定的事情。变量可以通过OID或MIB对象名称来标识。

MIB的给经理的信息,例如:与

  • 值的类型与特定的OID相关的OID的相关

    • 对人友好的象征性名字的变量的访问权限
    • 提示由代理
    • 实施
    • SNMP表索引结构和类型
    • 对其他MIB对象的引用(例如通知)

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

    如果MIB不可用,Manager仍然需要计算出更多或更少的附加细节(以上列出了一些细节),以便可以将这些细节硬编码到Manager中。

    例如,GET操作可以只执行一个OID,但是如果没有MIB管理器可能有麻烦使响应值看起来很友善。

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

    更复杂的场景涉及使用由MIB正式定义的索引结构动态构建OID(用于处理SNMP表项)。

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

    MIB以ASN.1语言的子集编写。与ASN.1不同,MIB对于SNMP域非常具体。

    要使用带有pysnmp的MIB,您需要通过ASN。1 MIB到build-pysnmp-mib shell脚本(来自pysnmp发行版),它将调用smidump和其他工具将ASN.1 MIB转换为表示支持pysnmp的MIB对象的Python类集合。