sur les vieux firmware Procurve, il est impossible d'effacer les stats par switch sans redémarer ces derniers. C'est pour ca que j'ai fait un petit script pour récuperer automatiquement les tables via telnet, (a paartir d'un autre trouvé sur un autre forum) et ainsi les comparer via un plugin notepad par exemple deux semaines plus tard. Je vous joins ce script, si jamais il interesse du monde
# Ce script va établir une connexion TELNET a un équipement, il faut renseigner dans le tableau @switchs les noms des équipements + le mdp et le Login
# Pour utiliser le script, placer ce dernier dans un dossier et créer dans ce même dossier un fichier texte nommé DIAG.txt
# Installer ensuite Perl sur votre poste ( active perl de préférence )
# lancez un invite de commande ( windows+r -> cmd ) puis placez vous dans le dossier ou est votre script ( cd +path de votre dossier parent, ex cd c://user/desktop)
#lancez ensuite la commande avec tout d'abord le path de votre Perl ( par défaut c://perl/bin/perl ) suivi du nom de votre fichier ( ex script.pl) ce qui donne c://user/desktop>c://perl/bin/perl script.pl
use Net::Telnet ();
use Cwd;
use Config;
#tableau de liste des switchs ou équipements à scanner
@switchs = ("switch1","switch2","switch3","switch4");#etc
#variable pour un futur compteur
$i=0;
#boucle pour faire le tour des switch ( dès qu'une connexion est terminée, on en commence une autre )
foreach $switch (@switchs)
{
#connexion en Telnet, on créé une session $telnet avec une nouvelle méthode Net::Telnet
my $telnet = new Net::Telnet (Timeout => 5, errmode => 'return', Telnetmode => 0);
#connexion au premier switch
$telnet->open($switch);
#certain switch ont un message "press any key to continue" lors de l'ouverture de la session telnet, cette ligne permet de la passer
$telnet->print('') if $telnet->waitfor('/Press any key to continue/') == 1;
# a l'apparition du message "login:", le script va rentrer les ID (ici admin)
$telnet->waitfor('/Login:.*$/');
$telnet->print('écrire son login ici');
#comme précédemment pour les mots de passe, il est possible d'attribuer un mdp par switch avec un tableau associatif
$telnet->waitfor('/Password:.*$/');
$telnet->print('écrire son mot de passe ici');
#on attend ensuite d'avoir le prompt ( SWMACEXEMPLE#) pour valider l'ouverture de la session
$telnet->waitfor(-match => '/>.*$/');
#on incrémente la valeur de $i pour savoir combien de switchs ont été scannés
$i++;
#On ouvre le fichier DIAG.txt en écriture sans écrasement, tous les info des switch seront a la suite dans le .txt
#il faut que le fichier soit au même emplacement que le script, ou alors spécifier son chemin d'acces
open (DIAG, '>>', "DIAG.txt") || die ("vous de pouvez pas céer le fichier \"DIAG.txt\"");
#mise en page du fichier, on écrit dans DIAG.txt avant chaque info de switch une barre "titre"
print DIAG "\n=Show interfaces========For $switch ======================================================\n";
#on écrit dans le prompt de la session telnet la commande "sh interfaces"
print $telnet-> cmd("sh interfaces");
config:
#tant que l'on peut, on récupere les lignes qui s'affichent en résultat de la commande dans une variable $line
while (my $line = $telnet->getline(Timeout => 10)) {
#si la reggex est vrai, c'est a dire qu'apparait le message disant d'appuyer sur espace pour déployer plus de lignes de résultat, alors on remplace cette ligne par rien, ce qui la fait disparaitre
$line =~ s/-- more --//g;
#lorsque le résultat de l'éxecution est finie ( on retombe sur le prompt SWMACEXEMPLE#), on termine la commande
if ($line =~ m/>.*$/) {
last config;
#sinon, on écrit chaque ligne dans le fichier texte.
} else {
unless ($line =~ m/\[/g) {
print DIAG $line;
}
#on appuie sur espace pour faire dérouler les résultat ( lorque l'on obtient un message -- more -- )
$telnet->print(' ');
}
}
#on clot la session telnet
$telnet -> close;
#on ferme le flux d'écriture du fichier
close (DIAG);
}
#on affiche sur l'invite de commande le nombre de switch scannés.
print "il y a $i switch qui ont été scannés";