(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::walk — 获取 SNMP 对象子树
$objectId
,$suffixAsKey
= false
,$maxRepetitions
= -1,$nonRepeaters
= -1
SNMP::walk() 用于读取以指定 $objectId
为根的 SNMP 子树。
objectId
要获取的子树的根
suffixAsKey
默认情况下,输出数组中的键使用完整的 OID 表示法。如果设置为 true
,则子树前缀将从键中删除,只留下 object_id 的后缀。
nonRepeaters
这指定了不应对其进行迭代的提供变量的数量。默认情况下,使用来自 SNMP 对象的值。
maxRepetitions
这指定了对重复变量进行迭代的最大次数。默认情况下,使用来自 SNMP 对象的值。
如果成功,则返回 SNMP 对象 ID 及其值的关联数组,否则返回 false
。当出现 SNMP 错误时,SNMP::getErrno() 和 SNMP::getError() 可用于分别检索错误号(特定于 SNMP 扩展,请参见类常量)和错误消息。
默认情况下,此方法不会抛出任何异常。要使库错误发生时抛出 SNMPException 异常,应将 SNMP 类参数 exceptions_enabled
设置为相应的值。有关详细信息,请参见 SNMP::$exceptions_enabled
说明。
示例 #1 SNMP::walk() 示例
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$fulltree = $session->walk(".");
print_r($fulltree);
$session->close();
?>
以上示例将输出类似以下内容
Array ( [SNMPv2-MIB::sysDescr.0] => STRING: Test server [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8 [DISMAN-EVENT-MIB::sysUpTimeInstance] => Timeticks: (1150681750) 133 days, 4:20:17.50 [SNMPv2-MIB::sysContact.0] => STRING: Nobody [SNMPv2-MIB::sysName.0] => STRING: server.localdomain ... )
示例 #2 suffixAsKey
示例
suffixAsKey
可用于将多个 SNMP 子树合并为一个。此示例将接口名称映射到它们的类型。
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$session->valueretrieval = SNMP_VALUE_PLAIN;
$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);
$session->valueretrieval = SNMP_VALUE_LIBRARY;
$ifType = $session->walk(".1.3.6.1.2.1.2.2.1.3", TRUE);
print_r($ifDescr);
print_r($ifType);
$result = array();
foreach($ifDescr as $i => $n) {
$result[$n] = $ifType[$i];
}
print_r($result);
?>
以上示例将输出类似以下内容
Array ( [1] => igb0 [2] => igb1 [3] => ipfw0 [4] => lo0 [5] => lagg0 ) Array ( [1] => INTEGER: ieee8023adLag(161) [2] => INTEGER: ieee8023adLag(161) [3] => INTEGER: ethernetCsmacd(6) [4] => INTEGER: softwareLoopback(24) [5] => INTEGER: ethernetCsmacd(6) ) Array ( [igb0] => INTEGER: ieee8023adLag(161) [igb1] => INTEGER: ieee8023adLag(161) [ipfw0] => INTEGER: ethernetCsmacd(6) [lo0] => INTEGER: softwareLoopback(24) [lagg0] => INTEGER: ethernetCsmacd(6) )