PHPCon Poland 2024

SNMP::set

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SNMP::setУстанавливает значение объекта SNMP

Описание

public SNMP::set(array|string $objectId, array|string $type, array|string $value): bool

Запрашивает удалённый агент 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 указывает тип идентификатора каждого объекта. Он должен быть указан в виде одного символа из следующего списка.

types
=Тип, принимаемый 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' — это все разные способы указания значения OCTET STRING, а беззнаковый тип 'u' также указывают для обработки значений Gauge32.

Если MIB-файлы были загружены в MIB-дерево с помощью "snmp_read_mib" или были указаны в конфигурационном файле libsnmp, то для указания параметра 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

Новое значение.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Ошибки

Этот метод по умолчанию не генерирует исключения. Чтобы включить генерацию исключения SNMPException при возникновении некоторых ошибок данной библиотеки, необходимо установить параметр exceptions_enabled класса SNMP в соответствующее значение. Подробнее смотрите в объяснении параметра 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');
?>

Смотрите также

add a note

User Contributed Notes

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