(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::walk — Получает поддерево объекта SNMP
$objectId,$suffixAsKey = false,$maxRepetitions = -1,$nonRepeaters = -1
SNMP::walk() используется для чтения поддерева SNMP с корнем в указанном objectId.
objectIdsuffixAsKeytrue, префикс поддерева будет удалён из ключей, останется только суффикс object_id.
nonRepeatersmaxRepetitions
Возвращает ассоциативный массив идентификаторов объектов 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)
)