2024 年 PHP 日本大会

snmp_set_valueretrieval

(PHP 4 >= 4.3.3, PHP 5, PHP 7, PHP 8)

snmp_set_valueretrieval指定 SNMP 值的返回方法

描述

snmp_set_valueretrieval(int $method): true

参数

method
类型
SNMP_VALUE_LIBRARY 返回值将与 Net-SNMP 库返回的值相同。
SNMP_VALUE_PLAIN 返回值将是纯值,不包含 SNMP 类型信息。
SNMP_VALUE_OBJECT 返回值将是具有属性 valuetype 的对象,其中后者是SNMP_OCTET_STRSNMP_COUNTER 等常量之一。value 的返回方式取决于设置了哪个常量SNMP_VALUE_LIBRARYSNMP_VALUE_PLAIN

返回值

始终返回true

变更日志

版本 描述
8.2.0 返回类型现在是true;之前是bool

范例

示例 #1 使用 snmp_set_valueretrieval()

<?php
snmp_set_valueretrieval
(SNMP_VALUE_LIBRARY);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// $ret = "STRING: lo"

snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// $ret = "lo";

snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// stdClass Object
// (
// [type] => 4 <-- SNMP_OCTET_STR, see constants
// [value] => lo
// )

snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_PLAIN);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// stdClass Object
// (
// [type] => 4 <-- SNMP_OCTET_STR, see constants
// [value] => lo
// )

snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_LIBRARY);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// stdClass Object
// (
// [type] => 4 <-- SNMP_OCTET_STR, see constants
// [value] => STRING: lo
// )

?>

参见

添加注释

用户贡献的注释 3 个注释

0
Mikhail D
17 年前
示例显示接口状态。
(.iso.org.dod.internet.mgmt.mib-2.
interfaces.ifTable.ifEntry.ifAdminStatus)
此 MIB 请求的可能值
Enum(整数): up (1), down (2), testing (3)

<?php
//snmp_set_quick_print(0); // 默认值
$strIP = "10.1.1.1"; $strComm = "public";
$strOID = ".1.3.6.1.2.1.2.2.1.7.1";
echo
"\n 使用 snmp_set_quick_print(0) 获取默认值"
" snmp_get_valueretrieval = SNMP_VALUE_LIBRARY"
", 获取的值为 " . snmpget($strIP, $strComm, $strOID);
snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
echo
"\n SNMP_VALUE_LIBRARY " . snmp_get_valueretrieval();
echo
", 获取的值为 " . snmpget($strIP, $strComm, $strOID);
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
echo
"\n SNMP_VALUE_PLAIN " . snmp_get_valueretrieval();
echo
", 获取的值为 " . snmpget($strIP, $strComm, $strOID);

snmp_set_quick_print(1);
echo
"\n 默认valueretrieval snmp_set_quick_print(0) " ;
snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
echo
"\n SNMP_VALUE_LIBRARY " . snmp_get_valueretrieval();
echo
", 获取的值为 " . snmpget($strIP, $strComm, $strOID);
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
echo
"\n SNMP_VALUE_PLAIN " . snmp_get_valueretrieval();
echo
", 获取的值为 " . snmpget($strIP, $strComm, $strOID);
?>

结果
使用 snmp_set_quick_print(0) 获取默认值
snmp_get_valueretrieval = SNMP_VALUE_LIBRARY,
获取的值为 up(1)
SNMP_VALUE_LIBRARY 0, 获取的值为 up(1)
SNMP_VALUE_PLAIN 1, 获取的值为 1
默认valueretrieval snmp_set_quick_print(0)
SNMP_VALUE_LIBRARY 0, 获取的值为 up
SNMP_VALUE_PLAIN 1, 获取的值为 1
-1
[email protected]
15年前
默认值(如果未调用此函数)为“SNMP_VALUE_LIBRARY”,这似乎是SNMP内置的打印方式。

来自“snmp.c”
<code>
static PHP_GINIT_FUNCTION(snmp)
{
snmp_globals->valueretrieval = SNMP_VALUE_LIBRARY;
}
</code>

简要说明如下:
SNMP_VALUE_LIBRARY:类似于以下字符串
"INTEGER: 42"

SNMP_VALUE_PLAIN:类似于以下字符串
"42"

SNMP_VALUE_OBJECT:类似于以下PHP对象
object(
"type" => SNMP_INTEGER,
"value" => 42,
)
这里,“type”是“预定义常量”页面中列出的SNMP_*类型之一。此外,类型128、129和130是错误条件。
-1
[email protected]
20年前
此函数的可能方法常量如下:

SNMP_VALUE_LIBRARY
SNMP_VALUE_PLAIN
SNMP_VALUE_OBJECT

如果您正在收集数据,您可能需要SNMP_VALUE_PLAIN。
To Top