Net::Telnet sur un switch linksys
Bonjour à tous,
Voilà mon problème, j'ai besoin de me connecter à mes switch linksys en telnet via un script Perl pour faire un copy startup-config tftp. J'ai déjà réussi à utilisé ce module sur mes switch Cisco et HP. Mais je n'arrive pas a trouver la solution pour les Linksys.
La procédure de connexion est vraiment différente des autres.
Voici le script que j'ai déja écrit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #!/usr/bin/perl -w
use warnings;
use Net::Telnet ();
use Time::localtime;
$tm = localtime;
($DAY, $MONTH, $YEAR) = ($tm->mday, $tm->mon, $tm->year);
my $dateToday=($YEAR+1900)."-".($MONTH+1)."-".$DAY;
my $backup_host = "192.168.23.109";
my $backup_dir = "cisco";
my $backup_dir2 = "HP";
my $backup_dir3 = "linksys";
open (my $file, '<', '/var/lib/rancid/all/router.db')|| die "impossible d'ouvrir router.db : $!\n";
while(<$file>) {
if (/([0-9.]{1,})\:linksys/){ <= on récupère les adresse ip linksys dans le fichier
$ip2=$1;
&BackuplinkSwitch($ip2, 'R2T', 'bonjour'); <= @IP, user, mdp
}
}
sub BackuplinkSwitch()
{
my $LK_host=$_[0]; <= récupération des variables
my $LK_log=$_[1];
my $LK_pass=$_[2];
print $LK_host."\n";
my $session= new Net::Telnet (Timeout=>5, Telnetmode=>0, Host=> $LK_host);<=ouverture de la session en telnet
#début de la procédure de connexion $session->print("\n") if $session->waitfor('/Edit/') == 1;
print " login : ";
$session->print($LK_log) ; ecriture de login
$session->print($LK_pass); ecriture de mot de pass
$session->print("\e\t\n\n") ; alors ici il faut faire "echap", "tab","entrée,"entrée" pour accéder à l'autre menu
$session->print("\cZ") if $session->waitfor('/1. System Configuration Menu/') == 1; ici nous il faut faire "controle+Z pour avec à la ligne de commande
$session->print('lcli') if $session->waitfor('/>/') == 1; on écrit "lcli" pour accder au mot privilégier
$session->print($LK_log) if $session->waitfor('/User Name:/') == 1; on réécrit l'user pour valider
print "Ok\n";
et à partir de la on peut lancer la commande
$session->cmd("copy startup-config tftp://".$backup_host."/".$backup_dir3."/".$LK_host."-".$dateToday.".cfg\n\n\n");
$session->close;
}
close ($file); |
Mais a chaque fois que je lance ce programme il me met: qu'il comprend pas "\cZ et puis un command-time-out!! j'ai fai un $session->dump_log("logit3.txt") pour analyser l'éxécution et je vois bien qu'il n'arrive pas à écrire le login et le mdp!!
Merci de votre aide
PA