0

我正在从事一个涉及 SNMP 的项目。基本上我需要在 PHP 中构建 MIB 和 OID 树。

我知道已经有程序可以做到这一点,但我正在尝试实现我自己的版本以与我的 webapp 合并。

我所知道的:我熟悉 php SNMP 功能。我可以执行 SNMPWALk 来获取 OID 等。不幸的是,据我所知,没有一个函数可以找到所有 MIB 并解析它们。

我需要什么:首先从远程服务器获取所有 MIB 文档,然后根据每个文档获取它们的对象。最后,我的树将具有以下结构:

+ mib-doc1 |
           - obc1
           - obj2
+ mib-doc2 |
           - obj1
           - obj2
           - obj3

等等...

我也知道

  1. 从实际服务器中,我可以获得所有 MIB 目录:

$net-snmp-config --default-mibdirs

  1. 我还可以获得所有 MIB 文档的列表:

$snmpwalk -mALL -v1 cpublic ip

我有 2 个问题。

  1. 如何从远程服务器获取所有 MIB 文档的列表?
  2. 有没有更简单的方法(使用已知函数)来解析每个 MIB 以获取对象?

谢谢

4

1 回答 1

1

如果您只需要模块列表,请查看您的管理器是否支持 SNMPv2-MIB::sysORTable。这当然不能帮助您找到 MIB 文件,但会告诉您应该支持什么。

引用规格,sysORTable是:

“(概念)表列出了本地 SNMP 应用程序作为各种 MIB 模块的命令响应程序的能力。具有 MIB 模块的动态可配置支持的 SNMP 实体将具有动态变化的概念行数。”

这是我为标准 Linux 主机得到的:

snmptable -M +.  -m +ALL -v 2c -c public -Pu -Ci  <some ipaddr>  SNMPv2-MIB::sysORTable
SNMP table: SNMPv2-MIB::sysORTable

 index                                        sysORID                                              sysORDescr  sysORUpTime
     1          SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1         The MIB for Message Processing and Dispatching. 0:0:00:00.30
     2       SNMP-USER-BASED-SM-MIB::usmMIBCompliance         The MIB for Message Processing and Dispatching. 0:0:00:00.30
     3 SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance                   The SNMP Management Architecture MIB. 0:0:00:00.30
     4                            SNMPv2-MIB::snmpMIB                      The MIB module for SNMPv2 entities 0:0:00:00.30
     5                                TCP-MIB::tcpMIB         The MIB module for managing TCP implementations 0:0:00:00.30
     6                                     IP-MIB::ip The MIB module for managing IP and ICMP implementations 0:0:00:00.30
     7                                UDP-MIB::udpMIB         The MIB module for managing UDP implementations 0:0:00:00.30
     8        SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup               View-based Access Control Model for SNMP. 0:0:00:00.30
于 2014-09-16T13:55:41.570 回答