# SNMP::walk

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

SNMP::walk — Récupère le sous-objet d'un objet SNMP

### Description

public SNMP::walk(
array|string `$objectId`,
bool `$suffixAsKey` = `false`,
int `$maxRepetitions` = -1,
int `$nonRepeaters` = -1
): array|false

SNMP::walk() est utilisé pour lire le sous-objet SNMP dont la profondeur est spécifiée par le paramètre `object_id`.

### Liste de paramètres

`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 .

### Valeurs de retour

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.

### Erreurs / Exceptions

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.

### Exemples

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)
    )

### Voir aussi

- SNMP::getErrno() - Récupère le dernier code erreur
- SNMP::getError() - Récupère le dernier message d'erreur