PHP Conference Nagoya 2025

SNMP::walk

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

SNMP::walkПолучает поддерево объекта SNMP

Описание

public SNMP::walk(
    array|string $objectId,
    bool $suffixAsKey = false,
    int $maxRepetitions = -1,
    int $nonRepeaters = -1
): array|false

SNMP::walk() используется для чтения поддерева SNMP с корнем в указанном objectId.

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

objectId

Корень извлекаемого поддерева

suffixAsKey

По умолчанию для ключей в выходном массиве используется полная нотация OID. Если установлено значение true, префикс поддерева будет удалён из ключей, останется только суффикс object_id.

nonRepeaters

Определяет количество предоставленных переменных, которые не следует повторять. По умолчанию используется значение из объекта SNMP.

maxRepetitions

Определяет максимальное количество итераций по повторяющимся переменным. По умолчанию используется значение из объекта SNMP.

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

Возвращает ассоциативный массив идентификаторов объектов SNMP и их значений в случае успешного выполнения или false в случае возникновения ошибки. Когда возникает ошибка SNMP, SNMP::getErrno() и SNMP::getError() могут использоваться для получения номера ошибки (специфично для модуля SNMP, смотрите константы класса) и сообщение об ошибке соответственно.

Ошибки

По умолчанию метод не выбрасывает исключений. Выдачу исключений SNMPException при библиотечных ошибках включают путём установки свойству класса SNMP exceptions_enabled значения, которое определит конкретные ошибки, которые вызовут исключение. Подробнее смотрите объяснении свойства 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() - Получает последнее сообщение об ошибке
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top