PHP Conference Japan 2024

SNMP::set

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

SNMP::set設定 SNMP 物件的值

說明

public SNMP::set(陣列|字串 $objectId, 陣列|字串 $type, 陣列|字串 $value): 布林值

請求遠端 SNMP 代理程式設定由 objectId 指定的一個或多個 SNMP 物件的值。

參數

如果 objectId字串,則 typevalue 也必須是 字串。如果 objectId陣列value 必須是包含對應值的等大小陣列,type 可以是 字串(其值將用於所有 objectId-value 對)或具有每個 OID 值的等大小陣列。當使用任何其他參數組合時,可能會顯示一些 E_WARNING 訊息,並附帶詳細說明。

objectId

SNMP 物件 ID

當 object_id 陣列中的 OID 數量大於 max_oids 物件屬性時,set 方法將必須使用多個查詢來執行請求的值更新。在這種情況下,會針對每個區塊進行類型和值檢查,因此由於請求的 OID 的類型或值錯誤,第二個或後續的請求可能會失敗。為了標記這一點,當 object_id 陣列中的 OID 數量大於 max_oids 時,會發出警告。

type

MIB 定義了每個物件 ID 的類型。它必須指定為以下列表中的單個字元。

類型
=類型取自 MIB
i整數 (INTEGER)
u整數 (INTEGER)
s字串 (STRING)
x十六進位字串 (HEX STRING)
d十進位字串 (DECIMAL STRING)
n空物件 (NULLOBJ)
o物件 ID (OBJID)
t時間刻度 (TIMETICKS)
aIP 位址 (IPADDRESS)
b位元 (BITS)

如果在編譯 SNMP 程式庫時定義了 OPAQUE_SPECIAL_TYPES,則以下類型也適用

類型
U無號 int64 (unsigned int64)
I有號 int64 (signed int64)
F浮點數 (float)
D雙精度浮點數 (double)

其中大多數將使用明顯對應的 ASN.1 類型。「s」、「x」、「d」和「b」都是指定 OCTET STRING 值的不同方式,而「u」無號類型也用於處理 Gauge32 值。

如果 MIB 檔案是透過「snmp_read_mib」或在 libsnmp 設定檔中指定載入到 MIB 樹中的,則可以使用「=」作為所有物件 ID 的 type 參數,因為這樣可以從 MIB 自動讀取類型。

請注意,有兩種方法可以設定 BITS 類型的變數,例如「SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}」

  • 使用類型「b」和位元編號列表。不建議使用此方法,因為針對相同 OID 的 GET 查詢將返回例如 0xF8。
  • 使用類型「x」和十六進位數字,但不(!)使用通常的「0x」前綴。

有關更多詳細資訊,請參閱範例章節。

value

新值。

回傳值

成功時返回 true,失敗時返回 false

錯誤/例外

預設情況下,此方法不會拋出任何例外。要啟用在發生某些程式庫錯誤時拋出 SNMPException 例外,應將 SNMP 類別參數 exceptions_enabled 設定為對應的值。有關更多詳細資訊,請參閱 SNMP::$exceptions_enabled 說明

範例

範例 #1 設定單個 SNMP 物件 ID

<?php
$session
= new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>

範例 #2 使用單一 SNMP::set() 呼叫設定多個值

<?php
$session
= new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), array('s', 's'), array("Nobody", "Nowhere"));
// 或
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

範例 #3 使用 SNMP::set() 設定 BITS SNMP 物件 ID

<?php
$session
= new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set('FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// 或
$session->set('FOO-MIB::bar.42', 'x', 'F0');
?>

參見

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top