(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::set — Устанавливает значение объекта SNMP
Запрашивает удалённый агент SNMP, устанавливающий значение
одного или нескольких объектов SNMP, указанных в objectId.
Если objectId - это строка (string), оба
type и value также должны быть
строками (string). Если objectId - массив (array),
value должен быть массивом равного размера, содержащим
соответствующие значения, type может быть либо
строкой (string) (это значение будет использоваться для всех
пар objectId-value) или
массив равного размера с каждым значением OID. Когда используются комбинации любых других параметров,
может отображаться ряд сообщений E_WARNING с подробным описанием.
objectIdtypeБаза управляющей информации MIB определяет для каждого объекта тип идентификатора. Тип указывается одним символом из следующего списка.
| = | Функция возьмёт тип из базы MIB |
| i | INTEGER |
| u | INTEGER |
| s | STRING |
| x | HEX STRING |
| d | DECIMAL STRING |
| n | NULLOBJ |
| o | OBJID |
| t | TIMETICKS |
| a | IPADDRESS |
| b | BITS |
Следующие типы также допустимы,
если при компиляции библиотеки SNMP определили
опцию OPAQUE_SPECIAL_TYPES:
| U | unsigned int64 |
| I | signed int64 |
| F | float |
| D | double |
Бо́льшая часть этих значений использует очевидный тип, который соответствует типу стандарта ASN.1. 's', 'x', 'd' и 'b' — это все разные способы указания значения OCTET STRING, а беззнаковый тип 'u' также указывают для обработки значений Gauge32.
Разрешается указывать тип '=' как значение параметра type
для каждого идентификатора объекта, если MIB-файлы загружаются в MIB-дерево функцией snmp_read_mib
или путём указания в конфигурационном файле библиотеки libsnmp, поскольку тогда функция
автоматически считает тип из базы MIB.
Обратите внимание, что переменную типа BITS устанавливают двумя способами, например, "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":
Раздел с примерами даёт дополнительную информацию.
value
Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
По умолчанию метод не выбрасывает исключений.
Выдачу исключений SNMPException при библиотечных ошибках включают
путём установки свойству класса SNMP exceptions_enabled значения,
которое определит конкретные ошибки, которые вызовут исключение.
Подробнее смотрите
объяснении свойства SNMP::$exceptions_enabled.
Пример #1 Установить одиночный идентификатор объекта SNMP
<?php
$session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>Пример #2 Установить несколько значений с помощью одного вызова SNMP::set()
<?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"));
// или
$session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>Пример #3 Использование SNMP::set() для установки идентификатора объекта BITS SNMP
<?php
$session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
$session->set('FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// или
$session->set('FOO-MIB::bar.42', 'x', 'F0');
?>