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