(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::set — Set the value of an SNMP object
$objectId, array|string $type, array|string $value): bool
Requests remote SNMP agent setting the value of
one or more SNMP objects specified by the objectId.
If objectId is string, both
type and value must be
string too. If objectId is array
value must be equal-sized array containing
corresponding values, type may be either
string (it's value will be used for all
objectId-value pairs) or
equal-sized array with per-OID value. When any other parameters' combinations are
used, a number of E_WARNING messages may be shown with detailed description.
objectIdThe SNMP object id
When count of OIDs in object_id array is greater than max_oids object property set method will have to use multiple queries to perform requested value updates. In this case type and value checks are made per-chunk so second or subsequent requests may fail due to wrong type or value for OID requested. To mark this a warning is raised when count of OIDs in object_id array is greater than max_oids.
typeMIB 定義了各個(gè)對象 id 的類型。必須是下面列出的單個(gè)字符之一。
| = | MIB類型 |
| i | INTEGER |
| u | INTEGER |
| s | STRING |
| x | HEX STRING |
| d | DECIMAL STRING |
| n | NULLOBJ |
| o | OBJID |
| t | TIMETICKS |
| a | IPADDRESS |
| b | BITS |
如果在編譯 SNMP 庫時(shí)定義了 OPAQUE_SPECIAL_TYPES,那么下列值是合法的:
| U | unsigned int64 |
| I | signed int64 |
| F | float |
| D | double |
這些值大都會(huì)使用與 ASN.1 相符的類型。's','x','d' 以及 'b' 都是指定一個(gè)八字節(jié)字符串值的方式。并且 'u' 無符號(hào)類型也可用于處理 Gauge32 值。
如果 MIB 文件是用 "snmp_read_mib" 或者通過在 libsnmp config 中指定而加載入 MIB 樹時(shí),
'=' 可以被用作為所有對象的 type 參數(shù),因?yàn)?type 可以被自動(dòng)從 MIB 中讀取。
注意有兩種方式可以設(shè)定 BITS 類型的變量,例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":
更多細(xì)節(jié)見范例部分。
valueThe new value.
成功時(shí)返回 true, 或者在失敗時(shí)返回 false。
本方法默認(rèn)不拋出任何異常。如果要在某些庫出錯(cuò)時(shí)拋出 SNMPException
異常,用戶需要將 SNMP 類參數(shù) exceptions_enabled
設(shè)定為相應(yīng)的值。更多細(xì)節(jié)見
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');
?>