SNMP::walk
(PHP 5 >= 5.4.0, PHP 7)
SNMP::walk — Получает поддерево объекта SNMP
Описание
$objectId
, bool $suffixAsKey
= false
, int $maxRepetitions
= -1
, int $nonRepeaters
= -1
) : array|bool
SNMP::walk() используется для чтения поддерева SNMP с корнем в указанном objectId
.
Список параметров
-
objectId
-
Корень извлекаемого поддерева
-
suffixAsKey
-
По умолчанию для ключей в выходном массиве используется полная нотация OID. Если установлено значение
true
, префикс поддерева будет удален из ключей, останется только суффикс object_id. -
nonRepeaters
-
Определяет количество предоставленных переменных, которые не следует повторять. По умолчанию используется значение из объекта SNMP.
-
maxRepetitions
-
Определяет максимальное количество итераций по повторяющимся переменным. По умолчанию используется значение из объекта SNMP.
Возвращаемые значения
Возвращает ассоциативный массив идентификаторов объектов SNMP и их значений в случае успешного выполнения или false
в случае возникновения ошибки.
Когда возникает ошибка SNMP, SNMP::getErrno() и
SNMP::getError() могут использоваться для получения номера
ошибки (специфично для модуля SNMP, смотрите константы класса) и сообщение об ошибке
соответственно.
Ошибки
Данный метод по умолчанию не генерирует исключения.
Чтобы включить генерацию исключения SNMPException при возникновении
некоторых ошибок данной библиотеки, необходимо установить параметр
exceptions_enabled
класса SNMP в
соответствующее значение. Подробнее смотрите в
объяснении параметра SNMP::$exceptions_enabled
.
Примеры
Пример #1 Пример использования SNMP::walk()
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$fulltree = $session->walk(".");
print_r($fulltree);
$session->close();
?>
Результатом выполнения данного примера будет что-то подобное:
Array ( [SNMPv2-MIB::sysDescr.0] => STRING: Test server [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8 [DISMAN-EVENT-MIB::sysUpTimeInstance] => Timeticks: (1150681750) 133 days, 4:20:17.50 [SNMPv2-MIB::sysContact.0] => STRING: Nobody [SNMPv2-MIB::sysName.0] => STRING: server.localdomain ... )
Пример #2 Пример использования suffixAsKey
suffixAsKey
может использоваться при объединении нескольких поддеревьев SNMP в одно.
В этом примере имена интерфейсов сопоставляются с их типом.
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$session->valueretrieval = SNMP_VALUE_PLAIN;
$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);
$session->valueretrieval = SNMP_VALUE_LIBRARY;
$ifType = $session->walk(".1.3.6.1.2.1.2.2.1.3", TRUE);
print_r($ifDescr);
print_r($ifType);
$result = array();
foreach($ifDescr as $i => $n) {
$result[$n] = $ifType[$i];
}
print_r($result);
?>
Результатом выполнения данного примера будет что-то подобное:
Array ( [1] => igb0 [2] => igb1 [3] => ipfw0 [4] => lo0 [5] => lagg0 ) Array ( [1] => INTEGER: ieee8023adLag(161) [2] => INTEGER: ieee8023adLag(161) [3] => INTEGER: ethernetCsmacd(6) [4] => INTEGER: softwareLoopback(24) [5] => INTEGER: ethernetCsmacd(6) ) Array ( [igb0] => INTEGER: ieee8023adLag(161) [igb1] => INTEGER: ieee8023adLag(161) [ipfw0] => INTEGER: ethernetCsmacd(6) [lo0] => INTEGER: softwareLoopback(24) [lagg0] => INTEGER: ethernetCsmacd(6) )
Смотрите также
- SNMP::getErrno() - Получает код последней ошибки
- SNMP::getError() - Получает последнее сообщение об ошибке