PHPCon Poland 2024

snmp2_set

(PHP >= 5.2.0, PHP 7, PHP 8)

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

Описание

snmp2_set(
    string $hostname,
    string $community,
    array|string $object_id,
    array|string $type,
    array|string $value,
    int $timeout = -1,
    int $retries = -1
): bool

snmp2_set() используется для установки значения объекта SNMP, указанного в object_id.

Список параметров

hostname

Имя хоста агента (сервера) SNMP.

community

Write-сообщество.

object_id

Идентификатор объекта SNMP.

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

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

timeout

Время ожидания в микросекундах.

retries

Количество повторных попыток при истечении времени ожидания.

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

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

Если хост SNMP отклоняет тип данных, выводится ошибка уровня E_WARNING вроде "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length.". Если указан неизвестный или недопустимый OID, вероятно, выведется предупреждение "Could not add variable".

Примеры

Пример #1 Пример использования snmp2_set()

<?php
snmp2_set
("localhost", "public", "IF-MIB::ifAlias.3", "s", "foo");
?>

Пример #2 Пример использования snmp2_set() для установки BITS идентификатору объекта SNMP

<?php
snmp2_set
("localhost", "public", 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// или
snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'x', 'F0');
?>

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

add a note

User Contributed Notes 1 note

up
0
jhuebel at gmail dot com
13 years ago
The "type" parameter must be one of the following, depending on the type of variable to set on the SNMP host:

i INTEGER
u unsigned INTEGER
t TIMETICKS
a IPADDRESS
o OBJID
s STRING
x HEX STRING
d DECIMAL STRING

If OPAQUE_SPECIAL_TYPES was defined while compiling the SNMP library, the following are also valid:

U unsigned int64
I signed int64
F float
D double
To Top