©
本文档使用
php中文网手册 发布
(PHP 5 >= 5.4.0)
SNMP::set — Set the value of an SNMP object
$object_id
, mixed $type
, mixed $value
)
Requests remote SNMP agent setting the value of
one or more SNMP objects specified by the object_id.
If object_id is string , both
type and value must be
string too. If object_id is array value must be equal-sized array containing
corresponding values, type may be either
string (it's value will be used for all
object_id-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.
object_id The 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.
type MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。
| = | 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 |
这些值大都会使用与 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)}":
更多细节见范例部分。
value The new value.
成功时返回 TRUE , 或者在失败时返回 FALSE 。
本方法默认不抛出任何异常。如果要在某些库出错时抛出 SNMPException
异常,用户需要将 SNMP 类参数 exceptions_enabled
设定为相应的值。更多细节见
SNMP::$exceptions_enabled 的解释。
Example #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" );
?> Example #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" ));
?> Example #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' );
?>