CakeFest 2024: The Official CakePHP Conference

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 при возникновении некоторых ошибок данной библиотеки, необходимо установить параметр 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() - Получает последнее сообщение об ошибке
add a note

User Contributed Notes

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