SNMP::walk

(PHP 5 >= 5.4.0, PHP 7)

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

Описание

public SNMP::walk ( array|string $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() - Получает последнее сообщение об ошибке