SNMP::set

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

SNMP::setSet the value of an SNMP object

說明

public SNMP::set(array|string $objectId, array|string $type, array|string $value): bool

Requests remote SNMP agent setting the value of one or more SNMP objects specified by the objectId.

參數(shù)

If objectId is string, both type and value must be string too. If objectId is array value must be equal-sized array containing corresponding values, type may be either string (it's value will be used for all objectId-value pairs) or equal-sized array with per-OID value. When any other parameters' combinations are used, a number of E_WARNING messages may be shown with detailed description.

objectId

The SNMP object id

When count of OIDs in object_id array is greater than max_oids object property set method will have to use multiple queries to perform requested value updates. In this case type and value checks are made per-chunk so second or subsequent requests may fail due to wrong type or value for OID requested. To mark this a warning is raised when count of OIDs in object_id array is greater than max_oids.

type

MIB 定義了各個(gè)對(duì)象 id 的類型。必須是下面列出的單個(gè)字符之一。

類型
=MIB類型
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS

如果在編譯 SNMP 庫時(shí)定義了 OPAQUE_SPECIAL_TYPES,那么下列值是合法的:

types
Uunsigned int64
Isigned int64
Ffloat
Ddouble

這些值大都會(huì)使用與 ASN.1 相符的類型。's','x','d' 以及 'b' 都是指定一個(gè)八字節(jié)字符串值的方式。并且 'u' 無符號(hào)類型也可用于處理 Gauge32 值。

如果 MIB 文件是用 "snmp_read_mib" 或者通過在 libsnmp config 中指定而加載入 MIB 樹時(shí), '=' 可以被用作為所有對(duì)象的 type 參數(shù),因?yàn)?type 可以被自動(dòng)從 MIB 中讀取。

注意有兩種方式可以設(shè)定 BITS 類型的變量,例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  • 使用 "b" 類型以及一個(gè)位數(shù)的列表。不推薦使用此方法,因?yàn)?GET 查詢對(duì)同一個(gè) OID 將會(huì)返回例如 0xF8。
  • 使用 "x" 類型以及一個(gè)十六進(jìn)制數(shù)但是不需要通常的 "0x" 前綴。

更多細(xì)節(jié)見范例部分。

value

The new value.

返回值

成功時(shí)返回 true, 或者在失敗時(shí)返回 false。

錯(cuò)誤/異常

本方法默認(rèn)不拋出任何異常。如果要在某些庫出錯(cuò)時(shí)拋出 SNMPException 異常,用戶需要將 SNMP 類參數(shù) exceptions_enabled 設(shè)定為相應(yīng)的值。更多細(xì)節(jié)見 SNMP::$exceptions_enabled 的解釋。

范例

示例 #1 Set single SNMP object id

<?php
  $session 
= new SNMP(SNMP::VERSION_2C"127.0.0.1""private");
  
$session->set('SNMPv2-MIB::sysContact.0''s'"Nobody");
?>

示例 #2 Set multiple values using single SNMP::set() call

<?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"));
// or
  
$session->set(array('SNMPv2-MIB::sysContact.0''SNMPv2-MIB::sysLocation.0'), 's', array("Nobody""Nowhere"));
?>

示例 #3 Using SNMP::set() for setting BITS SNMP object 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');
// or
  
$session->set('FOO-MIB::bar.42''x''F0');
?>

參見