SNMP::set
(PHP 5 >= 5.4.0)
SNMP::set — Définitl a valeur d'un objet SNMP
Description
Demande à l'agent distant SNMP de définir la valeur
d'un ou plusieurs objets SNMP spécifiés par son identifiant
object_id
.
Liste de paramètres
-
object_id
-
L'identifiant de l'objet SNMP.
Lorsque le nombre d'OIDs dans le tableau object_id est supérieur à la propriété max_oids de l'objet, la méthode devra utiliser plusieurs requêtes pour effectuer les mises à jour demandées. Dans ce cas, la vérification du type et de la valeur est effectuée par morceau, aussi, la seconde requête (et les autres sous-requêtes) échouera en raison d'un mauvais type ou d'une mauvaise valeur pour l'OID demandé. Afin de repérer ce comportement, une alerte est émise lorsque le nombre d'OIDs dans le tableau object_id est supérieur à la propriété max_oids.
-
type
-
Le MIB définit le type de chaque identifiant d'objets. Il doit être spécifié sous la forme d'un simple caractère depuis la liste suivante.
types = Le type est récupéré depuis le MIB i INTEGER u INTEGER s STRING x HEX STRING d DECIMAL STRING n NULLOBJ o OBJID t TIMETICKS a IPADDRESS b BITS Si la constante
OPAQUE_SPECIAL_TYPES
a été définie lors de la compilation de la bibliothèque SNMP, les caractères suivants seront également disponibles :types U int64 non-signé I int64 signé F float D double La plupart de ces valeurs utilise le type ASN.1 correspondant. 's', 'x', 'd' et 'b' sont toutes des façons différentes de spécifier la valeur OCTET STRING et le type non-signé 'u' est également utilisé pour gérer les valeurs Gauge32.
Si les fichiers MIB sont chargés dans l'arbre MIB avec "snmp_read_mib" ou en les spécifiant dans la configuration de libsnmp, '=' pourra être utilisé comme paramètre de type pour tous les identifiants d'objets, vu que le type peut automatiquement être lu depuis le MIB.
Notez qu'il y a 2 façons de définir une variable de type BITS like i.e. "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":
- En utilisant le type "b" et une liste d'octets. Cette méthode n'est pas recommandée vu que la requête GET pour un même OID retournera i.e. 0xF8.
- En utilisant le type "x" et un nombre héxadécimal mais sans(!) le préfixe usuel "0x".
Reportez-vous à la section sur les exemples pour plus de détails.
-
value
-
La nouvelle valeur.
Si object_id
est une chaîne de caractères, alors
les paramètres type
et value
doivent aussi être une chaîne de caractères. Si object_id
est un tableau, le paramètre value
doit être un
tableau de même taille contenant les valeurs correspondantes, et le
paramètre type
pourra être soit une chaîne de caractères (sa
valeur sera utilisée pour toutes les paires
object_id
-value
) ou bien
un tableau de même taille avec des paires OID-valeur. Lorsqu'une autre
combinaison de paramètres est fournie, des alertes de niveau
E_WARNING peuvent être émises avec une description détaillée.
Valeurs de retour
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
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 Définit un seul identifiant d'objet SNMP
<?php $session = new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private"); $session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody"); ?>
Exemple #2 Définit plusieurs valeurs en utilisant un seul appel à la méthode SNMP::set() call
<?php $session = new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private"); $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), array('s', 's'), array("Nobody", "Nowhere")); // ou $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere")); ?>
Exemple #3 Exemple avec SNMP::set() pour configurer l'identifiant d'objet SNMP BITS
<?php $session = new SNMP(SNMP_VERSION_2C, "127.0.0.1", "private"); $session->set('FOO-MIB::bar.42', 'b', '0 1 2 3 4'); // ou $session->set('FOO-MIB::bar.42', 'x', 'F0'); ?>