Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1769 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Récupérer des données dans plusieurs fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer des données dans plusieurs fichiers

n°2191470
pierra56
Posté le 23-05-2013 à 11:08:47  profilanswer
 

Bonjour,
 
Voilà, je voudrais savoir comment faire pour lire plusieurs fichiers et ainsi se servir de leurs donnée dans mon script. Qu'il le lise un a un ou tous en même temps cela n'a pas trop d'importance.
Enfaite se sont des fichiers avec des adresses IP, j'ai besoins qu'il se connecte à chacune d'elle.
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use autodie;
  5. use feature qw(say);
  6. use English qw(-no_match_vars);
  7. use Net::Telnet::Cisco;
  8. use Net::Telnet;
  9.  
  10. # donnée persistente avec une closure
  11. {
  12. my $i;
  13. my $today = join "-", map {$_ + (0, 1, 1900)[$i++]}(localtime)[3..5];
  14. sub today { return $today; }
  15. }
  16.  
  17. my $backup = {host => '192.***.**.*', dir => 'cisco', dir2 => 'HP', dir3 => 'linksys'};
  18. my $cisco = {host=> undef, log => 'R2T', pass => 'bonjour', enapass=> 'cisco'};
  19. my $HP = {host => undef, log => 'R2T', pass => 'bonjour'};
  20. my $LK = {host => undef, log => 'R2T', pass => 'bonjour'};
  21. ########Ouverture du fichier ##############"
  22. open(my $fh, '<', '/var/lib/rancid/all/router.db'); # le fichier où ce trouve un partie des adresses IP, Comment rajouter d'autre fichier???
  23. foreach (<$fh> ) {
  24. if (/([0-9.]{1,})\:cisco/)
  25. {      
  26. $cisco->{host}=$1;
  27. &BackupCiscoSwitch($cisco, $backup);
  28. }
  29.  
  30. elsif (/([0-9.]{1,})\:hp/)
  31. {
  32.   $HP->{host} = $1;
  33.   &BackupHpSwitch($HP, $backup);
  34. }
  35. elsif (/([0-9.]{1,})\:linksys/)
  36. {      
  37. $LK->{host}=$1;
  38. &BackupLinkSwitch($LK, $backup);
  39. }
  40.  
  41. }
  42. close($fh);
  43. #backup pour switch cisco
  44. sub BackupCiscoSwitch($$) {
  45.  my ($cisco, $backup)  = (shift, shift);
  46. say $cisco->{host};
  47.  
  48.  my $session = Net::Telnet::Cisco->new(Host => $cisco->{host}, errmode => sub {&error});
  49.  print "   login : ";
  50.  if ($session->login( $cisco->{log}, $cisco->{pass}) ) {
  51.       print "Ok\n";
  52.        # Enable mode
  53.        print "   enable mode : ";
  54.  
  55.        if ($session->enable($cisco->{enapass}) ) {
  56.                print "Ok\n";
  57.                $session->cmd("copy run tftp://".$backup->{host}.'/'.$backup->{dir}.'/'.$cisco->{host}.'-'.today().".cfg\n\n\n" );
  58.                $session->close;
  59.                }
  60.                else
  61.                {
  62.                print "Failed\n";
  63.                }
  64.        }
  65.        else
  66.        {
  67.        print "Failed\n";
  68.        }
  69.  
  70. }
  71. #backup pour switch HP procurve
  72. sub BackupHpSwitch ($$) {
  73. my ($HP, $backup)  = (shift, shift);
  74. say $HP->{host};
  75.  
  76. my $session = new Net::Telnet( Timeout =>10, Telnetmode => 0, errmode => sub {&error}, Dump_Log => "logit.txt" );
  77. $session->open($HP->{host});
  78. $session->print('') if $session->waitfor('/Press any key to continue/') == 1;
  79. print "   login : ";
  80.     #$session->dump_log("logit.txt" );
  81.  $session->print($HP->{log}) if ($session->waitfor('/Username:/') == 1);
  82.  $session->print($HP->{pass}) if ($session->waitfor('/Password:/') == 1);
  83.   say "Ok";
  84. $session->dump_log("logit.txt" );
  85.  $session->cmd("copy running-config tftp ".$backup->{host}.' '.$backup->{dir2}.'/'.$HP->{host}.'-'.today().".cfg\n\n\n" ) if ($session->waitfor('/#/') == 1);    
  86. $session->close;
  87. }
  88. #bachup pour switch Linksys
  89. sub BackupLinkSwitch($$)
  90.    {
  91.       my ($LK, $backup) = (shift, shift);
  92.  
  93.       say $LK->{host};
  94.  
  95.       my $session= new Net::Telnet (Timeout=>5, Telnetmode=>0, errmode => sub {&error});
  96.  
  97.     #$session->dump_log("logit.txt" );
  98.       $session->open($LK->{host});  sleep (1);
  99.       $session->print('') if ($session->waitfor('/Execute/') == 1);    
  100.       print "   login : ";
  101.     sleep (1);
  102.       $session->print($LK->{log});  
  103. sleep (1);
  104.       $session->print($LK->{pass});
  105. sleep (1);
  106.       $session->put("\e" );  
  107. sleep (1);
  108.       $session->put("\t" );
  109.       $session->put("\n" );
  110. sleep (1);
  111.       $session->put("\n" );  
  112.       $session->put("\cZ" );
  113. sleep (1);
  114.       $session->print('lcli');
  115. sleep (2);
  116.       $session->print($LK->{log}) if ($session->waitfor('/User Name:/') == 1);
  117.         $session->print($LK->{pass}) if ($session->waitfor('/Password:/') == 1);
  118.       say "Ok";
  119. sleep (1);
  120.       $session->cmd("copy startup-config tftp://".$backup->{host}.'/'.$backup->{dir3}.'/'.$LK->{host}.'-'.today().".cfg\n\n\n" ) if ($session->waitfor('/#/') == 1);
  121.  
  122. $session->close;
  123.    }
  124. sub error {
  125. print "connexion échoué\n";
  126. }


 
Merci
PA

mood
Publicité
Posté le 23-05-2013 à 11:08:47  profilanswer
 

n°2191471
gilou
Modérateur
Modzilla
Posté le 23-05-2013 à 11:24:55  profilanswer
 

Ben il y a aucun problème:
 
En parallèle:
open my $fh1, '/........../fichier1';
open my $fh2, '/........../fichier2';
open my $fh3, '/........../fichier3';
...
close $fh1;
close $fh2;
close $fh3;
 
et en succession:
my @filenames = ('/........../fichier1', '/........../fichier2', '/........../fichier3');
foreach my $filename (@filenames) {
open my $fh, $filename;
...
close $fh;
}
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2191475
pierra56
Posté le 23-05-2013 à 11:48:14  profilanswer
 

Impeccable!! Merci gilou! ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Récupérer des données dans plusieurs fichiers

 

Sujets relatifs
Acuqisition de données PAr RS232(MIKROC)recuperer id en ajax/php
Echange de données entre meme application JAVA installer dans deux PCRecupérer les infos des éléments d'une liste déroulante multichoix
Recupérer les infos des éléments d'une liste déroulante multichoixProblème de "zéro" lors fusion plusieurs cellules
[Excel/VBA] MàJ Données Graphique[VBA] comparaison de 2 fichiers excel
[Résolu][Perl] Découper un fichier en plusieurs et optimisation 
Plus de sujets relatifs à : Récupérer des données dans plusieurs fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR