PHP Conference Japan 2024

SNMP::walk

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

SNMP::walk擷取 SNMP 物件子樹

說明

public SNMP::walk(
    陣列|字串 $objectId,
    布林值 $suffixAsKey = false,
    整數 (int) $maxRepetitions = -1,
    整數 (int) $nonRepeaters = -1
): 陣列 (array)|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 範例

當將多個 SNMP 子樹合併為一個時,可以使用 suffixAsKey。此範例將介面名稱對應到其類型。

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