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 : Sélectionner tout - Visualiser dans une fenêtre à part
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