Php/docs/snmp.set

来自菜鸟教程
跳转至:导航、​搜索

SNMP::set

(PHP 5 >= 5.4.0, PHP 7)

SNMP::setSet the value of an SNMP object


说明

public SNMP::set ( mixed $object_id , mixed $type , mixed $value ) : bool

Requests remote SNMP agent setting the value of one or more SNMP objects specified by the object_id.


参数

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,那么下列值是合法的:

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)}":

  • 使用 "b" 类型以及一个位数的列表。不推荐使用此方法,因为 GET 查询对同一个 OID 将会返回例如 0xF8。
  • 使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。

更多细节见范例部分。

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');?>

参见