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); |
Partager