snmp2_set
(PHP >= 5.2.0, PHP 7, PHP 8)
snmp2_set — Set the value of an SNMP object
说明
snmp2_set(
string $hostname
,
string $community
,
array|string $object_id
,
array|string $type
,
array|string $value
,
int $timeout
= -1,
int $retries
= -1
): bool
参数
-
hostname
-
The hostname of the SNMP agent (server).
-
community
-
The write community.
-
object_id
-
The SNMP object id.
-
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.
-
timeout
-
The number of microseconds until the first timeout.
-
retries
-
The number of times to retry if timeouts occur.
返回值
成功时返回 true
, 或者在失败时返回 false
。
If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown.
If an unknown or invalid OID is specified the warning probably reads "Could not add variable".
范例
示例 #1 Using snmp2_set()
<?php
snmp2_set("localhost", "public", "IF-MIB::ifAlias.3", "s", "foo");
?>
示例 #2 Using snmp2_set() for setting BITS SNMP object id
<?php
snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// or
snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'x', 'F0');
?>