Requête SNMP en Perl
Il peut s’avérer parfois utile de développer ses propres scripts d’administration afin d’effectuer des requêtes bien précises de manière automatisée.
Le but de ce billet est d’introduire l’utilisation du module Perl Net::SNMP qui permet donc d’effectuer des requêtes SNMP depuis un script perl.
Dans un premier temps, il est nécessaire de déclarer l’utilisation de ce module au niveau du script :
Nous définissons ensuite quatres variables : l’OID dont nous souhaitons récupérer les différentes valeurs des instances, le port UDP de l’agent SNMP distant, l’équipement à interroger et la communauté SNMP à utiliser :
my $oid = "1.3.6.1.2.1.31.1.1.1.18.";
my $host = "10.0.0.1";
my $community = "private";
-hostname = $host,
-timeout = 3,
-retries = 1,
-community = $community,
-port = $snmp_port
);
L’objet est crée avec les paramètres précédemment déclarés en variables et la valeur du timeout ainsi que le nombre d’essais à effectuer après le timeout.
Nous pouvons ensuite effectuer la requête en balayant l’ensemble des instances possibles pour les interfaces VLAN (maximul 4095 dans notre cas) :
for (my $i=10001; $i<14096; $i++) {
# On effectue une requête SNMP de type GET sur l’OID et sur chaque instance
my $result = $session->get_request($oid.$i);
# Si la requête ne retourne pas d’erreur, l’objet $result est alors défini
if(defined($result)) {
# On récupère la valeur de l’instance
my $vlans = $result->{$oid.$i};
my $vid = substr($i,1);
# On affiche le numéro de VLAN et le nom du VLAN
print "VLAN ID : ".$vid." – Nom du VLAN : $vlans\n";
}
}
Vous l’aurez donc vu, le Perl permet de créer des scripts permettant d’effectuer des tâches d’administration très rapides sur les équipements réseaux. Le bout de code précédent est donné à titre d’exemple, et peut donc être largement améliorer afin d’obtenir un script plus fourni et plus facilement exploitable (notamment en ajoutant la prise en charge des arguments pour passer la communauté SNMP en paramètre par exemple).









Bonjour,
je viens de tester ce programme mais il ne fonctionne pas, ils me sortent plein de problème sur le code
??
Laissez votre réponse !
Vous devez être connecté pour poster un commentaire