(PHP 5 >= 5.4.0, PHP 7, PHP 8)
SNMP::walk — Récupère le sous-objet d'un objet SNMP
$objectId
,$suffixAsKey
= false
,$maxRepetitions
= -1,$nonRepeaters
= -1
SNMP::walk() est utilisé pour lire le sous-objet SNMP dont la profondeur est
spécifiée par le paramètre object_id
.
objectId
Racine du sous-objet à lire
suffixAsKey
Par défaut, la notation complète de l'OID est utilisée pour les
clés dans le tableau résultant. Si définit à true
, le préfixe
du sous-objet sera supprimé des clés, ne laissant ainsi que le
suffixe de object_id.
nonRepeaters
Spécifie le nombre de variables fournies qui ne doivent pas être répétées. Par défaut, cette valeur sera utilisée depuis l'objet SNMP.
maxRepetitions
Spécifie le nombre maximal d'itérations sur les variables répétées. Par défaut, cette valeur sera utilisée depuis l'objet SNMP .
Retourne un tableau associatif d'identifiants d'objets SNMP
ainsi que leurs valeurs en cas de succès ou false
si une erreur survient.
Lorsqu'une erreur SNMP survient, SNMP::get_errno() et
SNMP::get_error() peuvent être utilisées pour récupérer
respectivement le numéro de l'erreur (spécifique à l'extension SNMP, voir les constantes de la
classe) ainsi que le message d'erreur.
Cette méthode ne lance aucune exception par défaut.
Pour activer l'émission d'exceptions SNMPException lorsque
des erreurs de la bibliothèque surviennent,
le paramètre de la classe SNMP exceptions_enabled
doit être défini à la valeur correspondante. Voir les
explications sur SNMP::$exceptions_enabled
pour plus de détails.
Exemple #1 Exemple avec SNMP::walk()
<?php
$session = new SNMP(SNMP_VERSION_1, "127.0.0.1", "public");
$fulltree = $session->walk(".");
print_r($fulltree);
$session->close();
?>
Résultat de l'exemple ci-dessus est similaire à :
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 ... )
Exemple #2 Exemple avec la paramètre suffixAsKey
Le paramètre suffixAsKey
peut être utilisé lors de la fusion
de plusieurs sous-objets SNMP en un seul. Cet exemple lie
les noms d'interfaces et leurs types.
<?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);
?>
Résultat de l'exemple ci-dessus est similaire à :
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) )