查詢

SNMP::set函式—用法及示例

「 設定SNMP物件的值 」


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

SNMP::set — 設定SNMP物件的值

說明

public SNMP::set(array|string $objectId, array|string $type, array|string $value): bool

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


引數 ¶
如果objectId是字串,則type和value也必須是字串。如果objectId是陣列值必須是包含相應值的相等大小的陣列,則type可以是字串(它的值將用於所有objectId值對)或具有每個oid值的相等大小的陣列。當使用任何其他引數組合時,可能會顯示一些帶有詳細描述的E_WARNING訊息。

objectId
SNMP物件id

當object_id陣列中的oid計數大於max_oid時,物件屬性集方法將不得不使用多個查詢來執行請求的值更新。在這種情況下,型別和值檢查是按塊進行的,因此第二次或後續請求可能會由於請求OID的錯誤型別或值而失敗。為了標記這一點,當object_id陣列中的oid計數大於max_oid時將引發警告。

型別
MIB: MIB: MIB必須是下面列出的單個字元之一。

型別
=MIB型別
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS

如果在編譯 SNMP 庫時定義了 OPAQUE_SPECIAL_TYPES,那麼下列值是合法的:

types
Uunsigned int64
Isigned int64
Ffloat
Ddouble
這些值大都會使用與 ASN.1 相符的型別。's','x','d' 以及 'b' 都是指定一個八位元組字串值的方式。並且 'u' 無符號型別也可用於處理 Gauge32 值。

如果 MIB 檔案是用 "snmp_read_mib" 或者透過在 libsnmp config 中指定而載入入 MIB 樹時, '=' 可以被用作為所有物件的 type 引數,因為 type 可以被自動從 MIB 中讀取。

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

使用 "b" 型別以及一個位數的列表。不推薦使用此方法,因為 GET 查詢對同一個 OID 將會返回例如 0xF8。
使用 "x" 型別以及一個十六進位制數但是不需要通常的 "0x" 字首。
更多細節見示例部分。

value
The new value.

返回值
成功時返回 true, 或者在失敗時返回 false。

錯誤/異常
本方法預設不丟擲任何異常。如果要在某些庫出錯時丟擲 SNMPException 異常,使用者需要將 SNMP 類引數 exceptions_enabled 設定為相應的值。更多細節見 SNMP::$exceptions_enabled 的解釋。

示例
示例 #1 Set single SNMP object id
<?php
  $session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
  $session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>

示例 #2 Set multiple values using single SNMP::set() call

<?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"));
// or
  $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

示例 #3 Using SNMP::set() for setting BITS SNMP object 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');
// or
  $session->set('FOO-MIB::bar.42', 'x', 'F0');
?>

補充糾錯
上一個函式: SNMP::setSecurity()函式
熱門PHP函式
分享連結