PHP Conference Japan 2024

SNMP::set

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SNMP::set设置 SNMP 对象的值

描述

public SNMP::set(数组|字符串 $objectId, 数组|字符串 $type, 数组|字符串 $value): 布尔值

请求远程 SNMP 代理设置由 objectId 指定的一个或多个 SNMP 对象的值。

参数

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

objectId

SNMP 对象 ID

当 object_id 数组中的 OID 数量大于 max_oids 对象属性时,set 方法将必须使用多个查询来执行请求的值更新。在这种情况下,每个块都会对 type 和 value 进行检查,因此由于请求的 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,则以下内容也有效

类型
U无符号 int64
I有符号 int64
F浮点数
D双精度浮点数

大多数这些将使用明显的对应 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