SNMP::set

(PHP 5 >= 5.4.0)

SNMP::setSet the value of an SNMP object

說明

public bool SNMP::set ( mixed $object_id , mixed $type , mixed $value )

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

參數

If object_id is string, both type and value must be string too. If object_id is array value must be equal-sized array containing corresponding values, type may be either string (it's value will be used for all object_id-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.

object_id

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' 都是指定一個八進位字串值的方式。並且 'u' 無號類型也可用於處理 Gauge32 值。

如果 MIB 檔案是用 "snmp_read_mib" 或者通過在 libsnmp config 中指定而載入 MIB 數時, '=' 可以被用作為所有物件的 type 參數,因為 type 可以被自動從 MIB 中讀取。

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

  • 使用 "b" 類型以及一個位數的列表。不建議使用此方法,因為 GET 查詢時間一個 OID 將會回傳例如 0xF8。
  • 使用 "x" 類型以及一個十六進位數但是不需要通常的 "0x" 前綴字。

更多細節見範例部分。

value

The new value.

回傳值

如果成功則回傳 TRUE,失敗則回傳 FALSE

錯誤/例外

本方法預設不拋出任何例外。如果要在某些函式庫出錯時拋出 SNMPException 例外,用戶需要將 SNMP 類別參數 exceptions_enabled 設定為對應的值。更多細節見 SNMP::$exceptions_enabled 的解釋

範例

Example #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");
?>

Example #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"));
?>

Example #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');
?>

參見

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top