snmp2_walk

(PHP >= 5.2.0, PHP 7, PHP 8)

snmp2_walk从代理中获取所有 SNMP 对象

描述

snmp2_walk(
    string $hostname,
    string $community,
    array|string $object_id,
    int $timeout = -1,
    int $retries = -1
): array|false

snmp2_walk() 函数用于读取由 hostname 指定的 SNMP 代理中的所有值。

参数

hostname

SNMP 代理(服务器)。

community

读取社区。

object_id

如果为 null,则 object_id 被视为 SNMP 对象树的根,并将该树下所有对象作为数组返回。

如果指定了 object_id,则将返回该 object_id 下的所有 SNMP 对象。

timeout

第一个超时前的微秒数。

retries

如果出现超时,重试的次数。

返回值

返回一个以 object_id 作为根的 SNMP 对象值的数组,或在错误时返回 false

示例

示例 #1 snmp2_walk() 示例

<?php
$a
= snmp2_walk("127.0.0.1", "public", "");

foreach (
$a as $val) {
echo
"$val\n";
}

?>

上述函数调用将返回运行在本地主机上的 SNMP 代理的所有 SNMP 对象。可以使用循环遍历这些值。

参见

  • snmp2_real_walk() - 返回所有对象,包括它们在指定对象内的各自对象 ID

添加笔记

用户贡献笔记 2 个笔记

2
Adam
12 年前
经过一些测试,我发现 SNMPWalk 比多个 SNMPGet 慢得多。

我旨在从 MIB 中检索 6 个对象;被轮询的设备通过 100mbps 网络链路连接。
我决定在循环中运行 SNMPGet 以从指定的 OID 中检索每个对象。
由于这些 OID 在同一棵树中,我然后考虑使用 walk,因为这会将数据合并到单个请求中。然后我遍历了树以获得相同的结果。

我随后测试了使用 microtime() 检索此信息所需的时间。
因此,你可以在与通过 get 请求 18 个 OID 相同的时间内检索包含 6 个 OID 的 1 个 walk。

我希望这能帮助那些想要加快 SNMP 请求的人。
0
Ypera123 at gmail dot com
7 年前
说实话,这并不重要,但示例 #1 中有一个拼写错误:“Snm2_pwalk”。
最好修复它,以免造成混淆。
To Top