Script de détection des équipements sur les ports d'un switch [Fermé]

Signaler
Messages postés
12
Date d'inscription
vendredi 5 mai 2017
Statut
Membre
Dernière intervention
12 mai 2017
-
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
-
Bonjour à tous !

Je suis sur un projet qui consiste à créer un script en Perl en deux temps :
en gros j'ai une archi avec plusieurs switchs qui ont plusieurs équipements branchés à eux-même, ici ce sont des routeurs qui m'intéressent.

Je dois donc tout d'abord récupérer l'@MAC de chaque équipement lié à un port du switch, et vérifier si cette @MAC correspond à celle d'un routeur Cisco ou non.

Et ensuite je dois tester cet équipement pour savoir si il y a des erreurs de CRC : par exemple si j'ai deux routeurs inter-connectés et qu'un est en 100Mo/Half-Duplex et l'autre en 1Go/ Full-Duplex !

Voilà, pour le moment je commence la première partie, étant donné que je sais déjà que je dois utiliser SNMP avec une MIB que l'on m'a transmit et j'ai déjà identifié l'OID qui permet de récupérer les @MAC de chaque interface.

Je ne sais juste pas du tout par où commencer pour le script car je n'ai jamais fais de Perl ni utilisé le protocole SNMP !

Merci à ceux qui pourront m'aider !

1 réponse

Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Salut WarzAnthem,

Je n'utilise pas personnellement SNMP non plus, mais il y a plusieurs modules disponibles sur CPAN, qui permettent d'effectuer des requêtes SNMP.

Par exemple Net::SNMP : https://metacpan.org/pod/release/DTOWN/Net-SNMP-v6.0.1/lib/Net/SNMP.pm

La documentation de ce module semble très complète et dispose aussi d'exemples.


Dal
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Pour savoir si ce module est installé, tu peux faire ceci à la ligne de commande :

perl -MNet::SNMP -l -e "print('installed')"
Messages postés
12
Date d'inscription
vendredi 5 mai 2017
Statut
Membre
Dernière intervention
12 mai 2017
208 >
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021

Merci à toi, j'avais déjà vu cette page mais je l'ai parcouru rapidement.

Je vais m'y attarder un peu plus, même si ça me fait un peu de lecture quand même ;)
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Vas plutôt directement aux exemples, après avoir vérifié que le module est installé, en utilisant un exemple correspondant à la version du protocole supportée par ton matériel, et utilise la documentation comme une documentation de référence et non d'apprentissage.

Lorsque dans les exemples tu as du code dans le programme principal comme :

#! /usr/local/bin/perl

   use strict;
   use warnings;

   use Net::SNMP;

   my $OID_sysUpTime = '1.3.6.1.2.1.1.3.0';

   my ($session, $error) = Net::SNMP->session(
      -hostname  => shift || 'localhost',
      -community => shift || 'public',
   );
(...)


les lignes du type
-hostname  => shift || 'localhost',
signifient que :

- si un argument est passé au script Perl lancé à partir de la ligne de commande, alors cet argument est utilisé (voir shift, qui dans ce cas prend les données du tableau @ARGV),
- sinon (
||
signifie "ou", comme en C) localhost est utilisé.

Tu peux directement écrire
-hostname  => '192.168.10.254',
si tu conçois ton script Perl seulement pour interroger cette IP sur cette session.

Dal
Messages postés
12
Date d'inscription
vendredi 5 mai 2017
Statut
Membre
Dernière intervention
12 mai 2017
208
Ça tombe bien j'étais pile dessus !

Merci de tes éclaircissements, je pense que je vais pouvoir commencer à créer qqchose avec ces exemples.
Messages postés
5541
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 mai 2021
933
Pas de pb, bon courage :-)