Scrip perl pour sauvegarde
Dernière réponse : dans Programmation
Bonjour,
J'ai un script à réaliser pour mon entreprise!
Ce script aura pour but de se connecter sur mes switchs en telnet (utilisation du module net::telnet), et de faire une copie de la configuration des switchs, le tout sera envoyé ver mon serveur TFTP! Pour les connections aux switchs j'ai un fichier .txt avec sur la meme ligne le :
Donc le contenue je le remet dans un tableau pour pouvoir les réutiliser!
Donc j'ai encore quelques problèmes pour faire les séparations sinon sa marche!!
Le probleme ici etant que je resors pas dans le bonne ordre le contenue du tableau
j'obtiens pour la 1er ligne:
Mais le gros problème c'est la connexion en telnet...donc j'aurais besoin de vous pour m'aider!!
Normalement juste ca devrait me connecter au switch non??
Merci de m'aider!!!!!!!!!!!!!!!!!!!!
J'ai un script à réaliser pour mon entreprise!
Ce script aura pour but de se connecter sur mes switchs en telnet (utilisation du module net::telnet), et de faire une copie de la configuration des switchs, le tout sera envoyé ver mon serveur TFTP! Pour les connections aux switchs j'ai un fichier .txt avec sur la meme ligne le :
nom ip login mdp
Donc le contenue je le remet dans un tableau pour pouvoir les réutiliser!
Donc j'ai encore quelques problèmes pour faire les séparations sinon sa marche!!
my $base; $base= "/script_backup/database_switch.txt"; open (BASE,"$base") or die "can't open file\n"; my $Ligne; my @tab; while ($Ligne=<BASE>) { my ($nom, $ip, $login, $mdp); # print $Ligne."\n"; # Condition en expression reguliere d'une ligne du fichier txt sous la forme # nom ip login mdp if($Ligne =~ /(.*)\s(.*)\s(.*)\s(.*)/) # J'ai un PB ici je pense! ne diserne pas l'espace entre le nom et IP........ { push @tab, $1, $2, $3, $4; $nom = $1; $ip = $2; $login = $3; $mdp = $4; print ("nom=$nom\n"); # test print ("ip=$ip\n"); # test print ("login=$login\n"); # test print ("mdp=$mdp\n"); # test # print ("$nom $ip $login $mdp"); # test } else { print("Erreur lecture de ligne : $.\n"); } } close (BASE);
Le probleme ici etant que je resors pas dans le bonne ordre le contenue du tableau
j'obtiens pour la 1er ligne:
nom=SWO1 10.42.78.1 ip=user1 login=mdp1 mdp=
Mais le gros problème c'est la connexion en telnet...donc j'aurais besoin de vous pour m'aider!!
#!/usr/bin/perl # strict demande de definir les variables use strict; # warnings permet d'avoir des messages d'erreurs use warnings; # Module pour la connection Telnet use Net::Telnet qw(TELOPT_TTYPE); #qw(TELOPT_TTYPE) sert a quoi??? use IO::Handle; # a quoi sa sert sa??? je l'ai mis parceque j'ai un modele my $switch_ip ='X.X.X.X'; # je met juste ca comme j'ai pas mis de MDP ni login my $switch_port = 12; # je met le n° port sur lequel je suis brancher my $telnet_session = new Net::Telnet ( 'Host' => $switch_ip, 'Port' => $switch_port, 'Errmode' => 'return', 'Timeout' => 20,);
Normalement juste ca devrait me connecter au switch non??
Merci de m'aider!!!!!!!!!!!!!!!!!!!!
Autres pages sur : scrip perl sauvegarde
Lassé par la pub ? Créez un compte
Re j'ai modfier mon fichier .txt pour ne plus avoir de pB au niveau du tableau!
while ($Ligne=<BASE>)
{
my ($nom, $ip, $login, $mdp);
# print $Ligne."\n";
# Condition en expression reguliere d'une ligne du fichier txt sous la forme
# nom;ip;login;mdp;
if($Ligne =~ /(.*);(.*);(.*);(.*);/) # j'ai modifier ici parcequ'avec les espaces j'avais un décalage donc j'ai mis de ";"
{
push @tab, $1, $2, $3, $4;
UPPP
Merci de m'aider!!!!!!
parisien91 a dit :
while ($Ligne=<BASE>)
{
my ($nom, $ip, $login, $mdp);
# print $Ligne."\n";
# Condition en expression reguliere d'une ligne du fichier txt sous la forme
# nom;ip;login;mdp;
if($Ligne =~ /(.*);(.*);(.*);(.*);/) # j'ai modifier ici parcequ'avec les espaces j'avais un décalage donc j'ai mis de ";"
{
push @tab, $1, $2, $3, $4;
UPPP
Merci de m'aider!!!!!!
bonjour,
J'ai encore un peu avancé mais je suis vraiment bloqué!!
Comme j'avais pas de messages d'erreurs pour la connexion, j'ai fais un test avec une commande show sur le switch sauf que je recoit pas de messages d'erreur mais
donc comment faire?? d'ou cela peux venir???
J'ai encore un peu avancé mais je suis vraiment bloqué!!
my $switch_ip = $ip; my $user_login = $login; my $user_password = $mdp; my $switch_port = 23; my $telnet_session; $telnet_session= new Net::Telnet ( 'Errmode' => 'return', 'Timeout' => 30, ); if (not defined $telnet_session) { &print_error("Connect Telnet Session - IP: $switch_ip PORT: $switch_port\n"); return (1); } ## Fonction necessaire a net::telnet $telnet_session->option_callback(\&opt_callback); $telnet_session->option_accept('Do' => TELOPT_TTYPE); $telnet_session->suboption_callback(\&subopt_callback); $telnet_session->open('Timeout' => 5, 'Errmode' => 'return', 'Host' => $switch_ip, 'Port' => $switch_port) or die "conn\ exion au switch $switch_ip echoue\n"; sleep 1; my @lines = $telnet_session->print('show ru'); print "show running = @lines\n";
Comme j'avais pas de messages d'erreurs pour la connexion, j'ai fais un test avec une commande show sur le switch sauf que je recoit pas de messages d'erreur mais
show running = 1
donc comment faire?? d'ou cela peux venir???
Lassé par la pub ? Créez un compte