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 定義了各個對象 id 的類型。必須是下面列出的單個字符之一。

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

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

types
Uunsigned int64
Isigned int64
Ffloat
Ddouble

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

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

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

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

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

value

The new value.

返回值

成功時返回 true, 或者在失敗時返回 false。

錯誤/異常

本方法默認不拋出任何異常。如果要在某些庫出錯時拋出 SNMPException 異常,用戶需要將 SNMP 類參數(shù) exceptions_enabled 設定為相應的值。更多細節(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');
?>

參見