SNMP::set

(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 对象的值。

参数

如果 objectIdstring,则 typevalue 也必须是 string。如果 objectIdarray,则 value 必须是大小相等的数组,包含相应的 value,type 可以是 string(其值将用于所有 objectId-value 对)或大小相等的数组,包含每个 OID 的值。当使用任何其他参数组合时,可能会显示许多 E_WARNING 消息,并附带详细描述。

objectId

SNMP 对象 ID

当 object_id 数组中的 OID 数量大于 max_oids 对象属性时,set 方法必须使用多个查询来执行请求的值更新。在这种情况下,类型和值的检查是按块进行的,因此由于请求的 OID 的类型或值错误,第二个或后续请求可能会失败。为了标记这一点,当 object_id 数组中的 OID 数量大于 max_oids 时,会发出警告。

type

MIB 定义了每个对象 ID 的类型。它必须从下面的列表中指定为单个字符。

类型
=类型来自 MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS

如果在编译 SNMP 库时定义了 OPAQUE_SPECIAL_TYPES,则以下内容也是有效的

类型
Uunsigned int64
Isigned int64
Ffloat
Ddouble

大多数这些将使用明显的对应 ASN.1 类型。's'、'x'、'd' 和 'b' 都是指定 OCTET STRING 值的不同方式,而 'u' 无符号类型也用于处理 Gauge32 值。

如果 MIB 文件通过 "snmp_read_mib" 加载到 MIB 树中,或在 libsnmp 配置中指定,则 " =" 可以用作所有对象 ID 的 type 参数,因为类型可以从 MIB 中自动读取。

注意,有两种方法可以设置 BITS 类型的变量,例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}"

  • 使用类型 "b" 和位号列表。不建议使用这种方法,因为对相同 OID 的 GET 查询将返回例如 0xF8。
  • 使用类型 "x" 和十六进制数,但不带(!) 通常的 "0x" 前缀。

有关更多详细信息,请参见示例部分。

value

新值。

返回值

如果成功,则返回 true,如果失败,则返回 false

错误/异常

默认情况下,此方法不抛出任何异常。要启用在出现某些库错误时抛出 SNMPException 异常,应将 SNMP 类参数 exceptions_enabled 设置为相应的值。有关更多详细信息,请参见 SNMP::$exceptions_enabled 解释

示例

示例 #1 设置单个 SNMP 对象 ID

<?php
$session
= new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>

示例 #2 使用单个 SNMP::set() 调用设置多个值

<?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"));
// 或者
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

示例 #3 使用 SNMP::set() 设置 BITS SNMP 对象 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');
// 或者
$session->set('FOO-MIB::bar.42', 'x', 'F0');
?>

参见

添加备注

用户贡献的备注

此页面没有用户贡献的备注。
To Top