PHP Conference Japan 2024

SNMP::walk

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SNMP::walk获取 SNMP 对象子树

描述

public SNMP::walk(
    数组|字符串 $objectId,
    布尔值 $suffixAsKey = false,
    整数 $maxRepetitions = -1,
    整数 $nonRepeaters = -1
): 数组|false

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)
)

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top