(PHP 5 >= 5.4.0, PHP 7)
SNMP::walk — Fetch SNMP object subtree
$object_id
[, bool $suffix_as_key = FALSE
[, int $max_repetitions
[, int $non_repeaters
]]] ) : array
SNMP::walk() is used to read SNMP subtree rooted at specified object_id.
object_idRoot of subtree to be fetched
suffix_as_key
By default full OID notation is used for keys in output array.
If set to TRUE subtree prefix will be removed from keys leaving only suffix of object_id.
non_repeatersThis specifies the number of supplied variables that should not be iterated over. The default is to use this value from SNMP object.
max_repetitionsThis specifies the maximum number of iterations over the repeating variables. The default is to use this value from SNMP object.
Returns an associative array of the SNMP object ids and their values on success or FALSE on error.
When a SNMP error occures SNMP::getErrno() and
SNMP::getError() can be used for retrieving error
number (specific to SNMP extension, see class constants) and error message
respectively.
Esse método não lança nenhuma exceção por padrão.
Para ativar o lançamento de exceções SNMPException quando algum erro ocorrer,
o parâmetro exceptions_enabled
deve ser configurado. Veja
SNMP::$exceptions_enabledessa explicação para mais detalhes.
Exemplo #1 SNMP::walk() example
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$fulltree = $session->walk(".");
print_r($fulltree);
$session->close();
?>
O exemplo acima irá imprimir algo similar à:
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
...
)
Exemplo #2 suffix_as_key example
suffix_as_key may be used when merging multiple SNMP subtrees into one.
This example maps interface names to their type.
<?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);
?>
O exemplo acima irá imprimir algo similar à:
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)
)