检查设备是否有 snmp 对象而不等待超时?

Check if a device has an snmp object without waiting for a timeout?

我正在使用 snmp4j 收集 POE(以太网供电)端口的功耗。但有些设备不支持 POE。当我去询问那些设备的功耗时,它们最终超时了。

等待超时会对在网页上显示信息造成不必要的延迟。

我不认为有一个普遍可用的对象会告诉您设备是否支持 POE,所以我想知道是否有一种方法可以在不实际请求对象然后等待的情况下询问设备对象是否存在暂停。

1) 部分设备将支持SNMPv2-MIB::sysORTable;可能你可以检索它并在尝试检索 POE 数据之前查看是否存在带有 POE 的 MIB(假设这里是 POE 检索而不是 SNMP 往返!)

引用 How can I get MIBs list from a remote server by using PHP? sysORTable 是:

"The (conceptual) table listing the capabilities of the local SNMP application acting as a command responder with respect to various MIB modules. SNMP entities having dynamically-configurable support of MIB modules will have a dynamically-varying number of conceptual rows."

这是我得到的标准 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
      // SNIP
     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

2) 除了较短(非默认)SNMP 检索超时之外,您是否可以使用当前方法?