IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Script backup configuration


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut Script backup configuration
    Bonsoir,
    Voila j'ai chercher sur le site pour pouvoir m'aider (d'ailleur j'ai avancé grace a un autre sujet) parce que 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!!
    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    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!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #!/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,);
    Merci d'avance!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    RE,

    Pour resoudre le probleme avec le tableau j'ai édité le fichier texte,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # nom;ip;login;mdp;                                                        
        if($Ligne =~ /(.*);(.*);(.*);(.*);/)
    j'espere quelqu'un pourra m'aider pour la suite:!

  3. #3
    Membre habitué Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Points : 131
    Points
    131
    Par défaut
    Tu as peut-être plusieurs espaces (ou tabulations) entre tes paramètres ? L'expression "\s" signifie "un blanc" (càd espace ou tabulation ou retour à la ligne...).
    • Soit tu essaies "\s+", càd "un ou plusieurs blancs).
    • Soit tu utilises la fonction split, qui découpe en tableau ta ligne puisque le séparateur est le même partout :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      ($nom, $ip, $login, $mdp) = split(/\s+/, $Ligne);

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    bah au depart, mon fichier.txt etait sous le forme
    avec 1 seul espace entre chaques "colonne" ... donc je n'ai pas trop compris pourquoi le décalage...

    Sinon tu peux m'aider avec le module telnet???

  5. #5
    Membre habitué Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Points : 131
    Points
    131
    Par défaut
    Désolé, je ne connais pas ce module : quel est ton problème ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    salut!
    Mon probleme ce situe dans la connexion telnet a un switch...
    J'ai fais le test d'une connexion a une DEBIAN avec le meme script ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        my $switch_ip = 'XXX.XX.XX.XX';                            
        print ("$switch_ip\n");                                                 
        my $user_login = 'login';                                      
        my $user_password = 'passwd';                              
        print "$user_login, $user_password\n";                                
        my $switch_port = 23;                         
       my $telnet_session; 
        $telnet_session= new Net::Telnet (                                                                                      
    ##                    'Host' =>$switch_ip,                                                                 
    ##                    'Port' => $switch_port,                                                               
                          'Errmode' => 'return',                                                                
                          'Timeout' => 30,                                                                      
                                          );                                                                                    
        $telnet_session->open('Timeout' => 5, 'Errmode' => 'return', 'Host' => $switch_ip, 'Port' => $switch_port) or die "Switch $switch_ipintrouvable\n";
        $telnet_session->login($user_login,$user_password) or die "connexion echoue\n"; 
        print $telnet_session->cmd('who');
    Ce code la fonctionne pour me connecter a une VM DEBIAN

    mais lorsque je veux l'utiliser pour mon switch rien.... Je remplace la derniere commande du code ci-dessus et met ca!J'enleve aussi pour les MDP et login, comme mon switch a pas encore de sécurité!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        $telnet_session->print("enable");
        $telnet_session->print("configure terminal");
    mais la sa me fais rien, j'ai fais des "print "test"", ils apparaissent mais c'est tout...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    bonjour,
    J'ai encore un peu avancé mais je suis vraiment bloqué!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
      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 recois pas de messages d'erreur mais ca
    donc comment faire?? d'ou cela peux venir???

  8. #8
    Membre habitué Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Points : 131
    Points
    131
    Par défaut
    Je ne connais pas ce module, mais d'après la doc, ça marche ! le retour = 1 signifie que tu n'as pas d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    print - write to object
    
            $ok = $obj->print(@list);
    
    This method writes @list followed by the output_record_separator to the open object and
    returns 1 if all data was successfully written.
    On time-out or other failures, the error mode action is performed. See errmode().
    Relis la doc ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Exactement je me suis replonger dans la doc et je viens de trouver apres de nombreuses recherches que le 1 signifiait que tout s'etait bien passé...

    C'est bon ce probleme est resolut merci de m'avoir aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script qui configure le wifi
    Par cem40 dans le forum Windows
    Réponses: 6
    Dernier message: 10/12/2011, 17h02
  2. script backup de disque à distance
    Par youness_ka dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 20/05/2007, 18h25
  3. [JACL] script de configuration WAS 5.1
    Par screenvlf dans le forum Websphere
    Réponses: 2
    Dernier message: 12/04/2007, 11h09
  4. Script Backup répertoire ?
    Par Jiraiya42 dans le forum C
    Réponses: 3
    Dernier message: 30/09/2006, 10h17
  5. Script de configuration
    Par manudja dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/04/2006, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo