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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
| use Net::Telnet qw(TELOPT_TTYPE);
use Term::VT102;
use IO::Handle;
# strict demande de definir les variables
use strict;
# initialisation des variables
my ($ok, @tab, $data, $filename,$centre,@lignes, $i,$t,$logfile,@text1,$text2);
my (@data,$data1,$data2,$version, $filelog,$data3 );
my $server = defined($ARGV[0]) ? $ARGV[0] : "192.168.1.254";
if ($server == "/?") { print ("--------------------------------------------------------------------
toto.exe [val1]
val1 = adresse ip du produit a configurer ( par defaut 192.168.2.1 )
--------------------------------------------------------------------\n");
exit;}
debut:
#efface l'ecran
clearscreen();
print (" CONFIGURATION DU MODEM ROUTER ");
#nom du fichier centre
my $passwd='smcadmin';
my $username ="root";
#####
$logfile="script.log";
######
$t = new Net::Telnet (Timeout => 10);
$t->errmode("return");
$t->option_callback (\&opt_callback);
$t->option_accept ('Do' => TELOPT_TTYPE);
$t->suboption_callback (\&subopt_callback);
$t->open($server) or die "Routeur $server introuvable\n";
# $fh = $t->dump_log($logfile);
$data = $t->get() ;
print $data;
$data = $t->get() ;
print $data;
sleep 1;
# attendre User name mais ca peut etre autre chose sur un switch
$t->waitfor ('User Name : $/i');
$t->print ($username);
sleep 1;
$t->waitfor ('User Password : $/i');
$t->print ($passwd);
sleep 1;
$t->waitfor ('/ROOT :> $/i')or die "mauvais mot de passe routeur ce n est pas \"$passwd\" \n ";
print ("\nDemarrage de la configuration.");
$t->print ('^U');
$t->waitfor ('/ROOT :> $/i');
#envoie show run au routeur
# les données sont dans $data
$t->print ("show run");
sleep 1;
$data=$t->get() ;
$t->waitfor('$/i');
$version= "V".substr($data,151,4);
$filelog=">conf".$version.".log";
open (FIC3,$filelog); # > pour ouverture en ecriture
print FIC3 ($data);
close(FIC3);
$t->close;
print "\nFin de la configuration, \nAttendre quelques secondes avant de vous servir du routeur \n";
exit;
# ici c'est fini
#--------------------- subroutine ------------------------------------------
# Callback for "DO" handling - for Net::Telnet.
sub opt_callback {
my ($obj,$opt,$is_remote,$is_enabled,$was_enabled,$buf_position) =
@_;
if ($opt == TELOPT_TTYPE and $is_enabled and !$is_remote) {
#
# Perhaps do something if we get TELOPT_TTYPE switched on?
#
}
return 1;
}
# Callback for sub-option handling - for Net::Telnet.
#
sub subopt_callback {
my ($obj, $opt, $parameters) = @_;
my ($ors_old, $otm_old);
# Respond to TELOPT_TTYPE with "I'm a VT102".
#
if ($opt == TELOPT_TTYPE) {
$ors_old = $obj->output_record_separator ('');
$otm_old = $obj->telnetmode (0);
$obj->print (
"\xff\xfa",
pack ('CC', $opt, 0),
'vt102',
"\xff\xf0"
);
$obj->telnetmode ($otm_old);
$obj->output_record_separator ($ors_old);
}
return 1;
}
# Callback for OUTPUT events - for Term::VT102.
#
sub vt_output {
my ($vtobject, $type, $arg1, $arg2, $private) = @_;
if ($type eq 'OUTPUT') {
$private->print ($arg1);
}
}
sub clearscreen{
@tab =("cls");
system @tab;
} |
Partager