Tom's Guide > Forum > Programmation > Scrip perl pour sauvegarde

Scrip perl pour sauvegarde

Forum Programmation : Scrip perl pour sauvegarde

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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 :

Code :
  1. 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!!

Code :
  1. my $base;
  2.     $base= "/script_backup/database_switch.txt";
  3. open (BASE,"$base" ) or die "can't open file\n";
  4. my $Ligne;
  5. my @tab;
  6. while ($Ligne=<BASE> )
  7. {
  8.     my ($nom, $ip, $login, $mdp);
  9. #    print $Ligne."\n";                                                                                                     
  10. # Condition en expression reguliere d'une ligne du fichier txt sous la forme                                               
  11. # nom ip login mdp                                                                                                         
  12.     if($Ligne =~ /(.*)\s(.*)\s(.*)\s(.*)/)  # J'ai un PB ici je pense! ne diserne pas l'espace entre le nom et IP........
  13.     {
  14.         push @tab, $1, $2, $3, $4;
  15.     $nom = $1;
  16.     $ip = $2;
  17.     $login = $3;
  18.     $mdp = $4;
  19.     print ("nom=$nom\n" ); # test
  20.     print ("ip=$ip\n" ); # test
  21.     print ("login=$login\n" ); # test
  22.     print ("mdp=$mdp\n" ); # test
  23. #      print ("$nom $ip $login $mdp" ); # test
  24.     }
  25.     else
  26.     {
  27.         print("Erreur lecture de ligne : $.\n" );
  28.     }
  29. }
  30. close (BASE);


Le probleme ici etant que je resors pas dans le bonne ordre le contenue du tableau
j'obtiens pour la 1er ligne:

Code :
  1. nom=SWO1 10.42.78.1
  2. ip=user1
  3. login=mdp1
  4. mdp=




Mais le gros problème c'est la connexion en telnet...donc j'aurais besoin de vous pour m'aider!!

Code :
  1. #!/usr/bin/perl
  2. # strict demande de definir les variables
  3. use strict;
  4. # warnings permet d'avoir des messages d'erreurs
  5. use warnings;
  6. # Module pour la connection Telnet
  7. use Net::Telnet qw(TELOPT_TTYPE); #qw(TELOPT_TTYPE) sert a quoi???
  8. use IO::Handle;    # a quoi sa sert sa??? je l'ai mis parceque j'ai un modele
  9.     my $switch_ip ='X.X.X.X'; # je met juste ca comme j'ai pas mis de MDP ni login
  10.     my $switch_port = 12; # je  met le n° port sur lequel je suis brancher
  11.     my $telnet_session = new Net::Telnet (
  12.                                         'Host' => $switch_ip,
  13.                                         'Port' => $switch_port,
  14.                                         'Errmode' => 'return',
  15.                                         'Timeout' => 20,);



Normalement juste ca devrait me connecter au switch non??

Merci de m'aider!!!!!!!!!!!!!!!!!!!!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Re j'ai modfier mon fichier .txt pour ne plus avoir de pB au niveau du tableau!

parisien91 a écrit :


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!!!!!!


Message édité par parisien91 le 14-01-2009 à 12:51:53
Répondre à parisien91

UP!!

Mes gros problemes viennent de la connexion telnet!! quelqu'un peut m'aider??

merci

Répondre à parisien91

bonjour,
J'ai encore un peu avancé mais je suis vraiment bloqué!!

Code :
  1. my $switch_ip = $ip;                                                                     
  2.     my $user_login = $login;
  3.     my $user_password = $mdp;
  4.     my $switch_port = 23;
  5.     my $telnet_session;
  6.     $telnet_session= new Net::Telnet (                                     
  7.                                       'Errmode' => 'return',
  8.                                       'Timeout' => 30,
  9.                                       );
  10.     if (not defined $telnet_session)
  11.     {
  12.         &print_error("Connect Telnet Session - IP: $switch_ip PORT: $switch_port\n" );
  13.         return (1);
  14.     }
  15.                 ## Fonction necessaire a net::telnet                                                                       
  16.     $telnet_session->option_callback(\&opt_callback);
  17.     $telnet_session->option_accept('Do' => TELOPT_TTYPE);
  18.     $telnet_session->suboption_callback(\&subopt_callback);
  19.     $telnet_session->open('Timeout' => 5, 'Errmode' => 'return', 'Host' => $switch_ip, 'Port' => $switch_port) or die "conn\
  20. exion au switch $switch_ip echoue\n";
  21.     sleep 1;
  22.     my @lines = $telnet_session->print('show ru');
  23.     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

Code :
  1. show running = 1



donc comment faire?? d'ou cela peux venir???


Message édité par parisien91 le 16-01-2009 à 15:03:42
Répondre à parisien91

C'est bon le 1 signifie que tous c'est bien passé!

Répondre à parisien91

Tu te fais un topic en monologue? :D

Répondre à Kharec
Tom's Guide > Forum > Programmation > Scrip perl pour sauvegarde
Aller à :

Il y a 2213 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens