2024 年 PHP 日本研討會

snmp2_walk

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

snmp2_walk從代理程式擷取所有 SNMP 物件

說明

snmp2_walk(
    字串 $hostname,
    字串 $community,
    陣列|字串 $object_id,
    int $timeout = -1,
    int $retries = -1
): array|false

snmp2_walk() 函式用於從 hostname 指定的 SNMP 代理程式讀取所有值。

參數

hostname

SNMP 代理程式(伺服器)。

community

讀取共同體 (community)。

object_id

如果為 nullobject_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 物件。可以使用迴圈逐一查看這些值。

另請參閱

新增註釋

使用者貢獻的註釋 2 則註釋

Adam
12 年前
經過一些測試,我發現 SNMPWalk 比多個 SNMPGet 慢得多。

我的目標是從 MIB 中檢索 6 個物件;被輪詢的設備通過 100mbps 網路連結連接。
我決定在迴圈中執行 SNMPGet,以從指定的 OID 檢索每個物件。
由於這些 OID 位於同一樹中,我隨後考慮使用 walk,因為這會將資料合併到單個請求中。然後我遍歷樹以獲得相同的結果。

我隨後使用 microtime() 測試了檢索此資訊所需的時間。
結果,您可以在與通過 get 請求 18 個 OID 相同的時間內檢索包含 6 個 OID 的 1 個 walk。

我希望這能幫助那些希望加快 SNMP 請求速度的人。
Ypera123 at gmail dot com
7 年前
說實話這並不重要,但範例 #1 中有一個拼寫錯誤:「Snm2_pwalk」
最好修正它,以免造成混淆。
To Top