PHP Conference Japan 2024

snmp2_set

(PHP >= 5.2.0,PHP 7,PHP 8)

snmp2_set设置 SNMP 对象的值

描述

snmp2_set(
    字符串 $hostname,
    字符串 $community,
    数组|字符串 $object_id,
    数组|字符串 $type,
    数组|字符串 $value,
    整数 $timeout = -1,
    整数 $retries = -1
): 布尔值

snmp2_set() 用于设置由 object_id 指定的 SNMP 对象的值。

参数

主机名

SNMP 代理(服务器)的主机名。

社区

写入社区。

对象 ID

SNMP 对象 ID。

类型

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 配置中指定它,则可以将 '=' 用作 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" 前缀。

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

新值。

超时

第一次超时之前的微秒数。

重试

如果发生超时,重试的次数。

返回值

成功时返回 true,失败时返回 false

如果 SNMP 主机拒绝数据类型,则会显示类似“警告:数据包错误。原因:(badValue)给定的值类型或长度错误。”的 E_WARNING 消息。如果指定了未知或无效的 OID,则警告可能显示“无法添加变量”。

示例

示例 #1 使用 snmp2_set()

<?php
snmp2_set
("localhost", "public", "IF-MIB::ifAlias.3", "s", "foo");
?>

示例 #2 使用 snmp2_set() 设置 BITS SNMP 对象 ID

<?php
snmp2_set
("localhost", "public", 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// 或
snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'x', 'F0');
?>

参见

添加注释

用户贡献的注释 1 条注释

0
jhuebel at gmail dot com
13 年前
"type" 参数必须是以下之一,具体取决于要在 SNMP 主机上设置的变量类型

i INTEGER
u 无符号 INTEGER
t TIMETICKS
a IPADDRESS
o OBJID
s STRING
x HEX STRING
d DECIMAL STRING

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

U 无符号 int64
I 有符号 int64
F 浮点数
D 双精度浮点数
To Top