English | 简体中文 | 繁體中文
查询

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函数
分享链接