PHP Conference Japan 2024

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 物件
// (
// [type] => 4 <-- SNMP_OCTET_STR, 請參閱常數
// [value] => lo
// )

snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_PLAIN);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// stdClass 物件
// (
// [type] => 4 <-- SNMP_OCTET_STR, 請參閱常數
// [value] => lo
// )

snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_LIBRARY);
$ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
// stdClass 物件
// (
// [type] => 4 <-- SNMP_OCTET_STR, 請參閱常數
// [value] => STRING: lo
// )

?>

參見

新增筆記

使用者貢獻的筆記 3 筆筆記

0
Mikhail D
17 年前
範例為 swow 介面狀態。
(.iso.org.dod.internet.mgmt.mib-2.
interfaces.ifTable.ifEntry.ifAdminStatus)
此 MIB 請求的可能值
列舉(整數):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) 的預設值擷取";
echo
" snmp_get_valueretrieval = SNMP_VALUE_LIBRARY";
echo
", 擷取值 " . 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 使用 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
使用 snmp_set_quick_print(0) 的預設值擷取
SNMP_VALUE_LIBRARY 0, 擷取值 up
SNMP_VALUE_PLAIN 1, 擷取值 1
-1
doug dot manley at gmail dot com
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
david at eder dot us
20 年前
這個函式可能的常數方法是

SNMP_VALUE_LIBRARY
SNMP_VALUE_PLAIN
SNMP_VALUE_OBJECT

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