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型別 |
i | INTEGER |
u | INTEGER |
s | STRING |
x | HEX STRING |
d | DECIMAL STRING |
n | NULLOBJ |
o | OBJID |
t | TIMETICKS |
a | IPADDRESS |
b | BITS |
如果在編譯 SNMP 庫時定義了 OPAQUE_SPECIAL_TYPES
,那麼下列值是合法的:
U | unsigned int64 |
I | signed int64 |
F | float |
D | double |
如果 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');
?>