SNMP::walk
(PHP 5 >= 5.4.0)
SNMP::walk — Fetch SNMP object subtree
Descripción
$object_id
[, bool $suffix_as_key = FALSE
[, int $max_repetitions
[, int $non_repeaters
]]] )
SNMP::walk() is used to read SNMP subtree rooted at specified object_id.
Parámetros
-
object_id -
Root of subtree to be fetched
-
suffix_as_key -
By default full OID notation is used for keys in output array. If set to
TRUEsubtree prefix will be removed from keys leaving only suffix of object_id. -
non_repeaters -
This specifies the number of supplied variables that should not be iterated over. The default is to use this value from SNMP object.
-
max_repetitions -
This specifies the maximum number of iterations over the repeating variables. The default is to use this value from SNMP object.
Valores devueltos
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.
Errores/Excepciones
Este método no lanza ninguna excepción de manera predeterminada.
Para poder lanzar una excepción SNMPException cuando ocurre alguno de los errores de la biblioteca
el parámetro exceptions_enabled de la clase SNMP
se debería establecer al valor correspondiente. Véase
la explicación de SNMP::$exceptions_enabled para más detalles.
Ejemplos
Ejemplo #1 SNMP::walk() example
<?php
$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
$fulltree = $session->walk(".");
print_r($fulltree);
$session->close();
?>
El resultado del ejemplo sería algo similar a:
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
...
)
Ejemplo #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);
?>
El resultado del ejemplo sería algo similar a:
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)
)
Ver también
- SNMP::getErrno() - Get last error code
- SNMP::getError() - Obtiene el último mensaje de error