Dutch PHP Conference 2025 - Call For Papers

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.

Параметри

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 об'єкта. Тип можна вказувати одним з символів:

types
=Тип, взятий з MIB
iINTEGER
uINTEGER
sSTRING
xHEX STRING
dDECIMAL STRING
nNULLOBJ
oOBJID
tTIMETICKS
aIPADDRESS
bBITS

Якщо під час компіляції бібліотеки SNMP задано OPAQUE_SPECIAL_TYPES, будуть доступні наступні типи:

types
Uбеззнаковий int64
Iзнаковий int64
Fдесятковий дріб (float)
Dдесятковий дріб подвійної точності (double)

Більшість з них мають зрозумілий ASN.1-тип. "s", "x", "d" та "b" вказують на один тип — OCTET STRING, а беззнаковий тип "u" використовується для обробки значень Gauge32.

Якщо MIB-файли підключені до дерева MIB, бо вказані в налаштуваннях libsnmp або за допомогою "snmp_read_mib", то потрібно задавати параметр type зі значенням "=" для усіх ID об'єктів, оскільки тип можна автоматично зчитувати з 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 у відповідь на помилки бібліотеки, полю exceptions_enabled класу SNMP необхідно задати потрібне значення. Докладніше: пояснення 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');
?>

Прогляньте також

add a note

User Contributed Notes

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