(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::walk — Recupera el sub-objeto de un objeto SNMP
$objectId
,$suffixAsKey
= false
,$maxRepetitions
= -1,$nonRepeaters
= -1
SNMP::walk() se utiliza para leer el sub-objeto SNMP cuya profundidad está
especificada por el argumento object_id
.
objectId
Raíz del sub-objeto a leer
suffixAsKey
Por omisión, la notación completa del OID se utiliza para las
claves en el array resultante. Si se establece en true
, el prefijo
del sub-objeto será eliminado de las claves, dejando solo el
sufijo de object_id.
nonRepeaters
Especifica el número de variables proporcionadas que no deben ser repetidas. Por omisión, este valor será utilizado desde el objeto SNMP.
maxRepetitions
Especifica el número máximo de iteraciones sobre las variables repetidas. Por omisión, este valor será utilizado desde el objeto SNMP.
Devuelve un array asociativo de identificadores de objetos SNMP
así como sus valores en caso de éxito o false
si ocurre un error.
Cuando ocurre un error SNMP, SNMP::get_errno() y
SNMP::get_error() pueden ser utilizadas para recuperar
respectivamente el número del error (específico de la extensión SNMP, ver las constantes de la
clase) así como el mensaje de error.
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.
Ejemplo #1 Ejemplo con SNMP::walk()
<?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 Ejemplo con el argumento suffixAsKey
El argumento suffixAsKey
puede ser utilizado al fusionar
varios sub-objetos SNMP en uno solo. Este ejemplo enlaza
los nombres de interfaces y sus tipos.
<?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) )