使用PySNMP获取mib时出现问题

2024-09-28 15:37:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我理解管理器如何发送get、Sets、GetNext、GetBulk等等,它会捕获陷阱之类的。有一件事我不太明白是MIB

据我所知,MIB在代理上是冷的,管理器将查询MIB树。这很好,尽管管理器需要OID能够正确地查询。有一个问题我要问的是这些是否是硬编码的。OID是否硬编码在管理器中?在

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

有人能帮我理清这些概念上的问题吗?在


Tags: 文件协议代理编码管理器getsets课程
1条回答
网友
1楼 · 发布于 2024-09-28 15:37:06

管理者需要知道要查询的特定变量。这些变量可以通过oid或MIB对象名来标识。在

MIB提供经理信息,例如:

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

如果MIB可用,那么Manager将能够执行任何SNMP操作,知道它感兴趣的代理变量的符号名或OID。所有需要的细节都将从MIB收集。在

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

例如,只需要一个OID就可以执行GET操作,但是如果没有MIB Manager,则可能无法使响应值看起来更人性化。在

另一个例子是一个SET操作,它要求Manager对值进行正确编码,它的类型可以在MIB中动态查找,或者硬编码到管理器中,以获得特定的oid。在

更复杂的场景涉及使用MIB正式定义的索引结构动态构建oid(用于寻址SNMP表条目)。在

GETNEXT/GETBULK查询的目的是让管理器不知道代理提供的确切的oid集。因此,管理器可以从已知的OID(甚至其前缀)开始迭代代理的变量。SNMP表检索就是其中之一。在

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

要在pysnmp中使用mib,您需要将ASN.1 mib传递到build pysnmp mibshell脚本(来自pysnmp发行版),该脚本将调用smidump和其他工具,将ASN.1 mib转换为pysnmp支持的mib对象的Python类集合。在

相关问题 更多 >