(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 с подробным описанием.
objectIdИдентификатор объекта SNMP
Когда количество OID в массиве object_id больше, чем max_oids, метод набора свойств объекта должен будет использовать несколько запросов для выполнения запрошенных обновлений значений. В этом случае проверки типа и значения выполняются для каждого фрагмента, поэтому второй или последующие запросы могут завершиться ошибкой из-за неправильного типа или значения запрошенного OID. Чтобы сообщить об этом, появляется предупреждение, когда количество OID в массиве object_id превышает max_oids.
typeБаза управляющей информации 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');
?>