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

Programmation et administration système Perl Discussion :

Gestion du temps entre deux commandes


Sujet :

Programmation et administration système Perl

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut Gestion du temps entre deux commandes
    Bonjour à tous,

    Dans mon script, je désire faire une un sauvegarde du fichier de configuration de mon switch en binaire et ascii.
    Pour cela j'envoie je dois envoyer les commandes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $t->waitfor("$prompt" );
     $t->print("copy runnin-config tftp filename fichier.ac address 1.1.1.1" ); # sauvegarde en ascii
     sleep 1;
     $t->waitfor("$prompt" );
     $t->print("copy config tftp filename fichier.bin address 1.1.1.1" ); # sauvegarde en binaire


    Le problème c'est que le copy prend plusieurs secondes, et je ne sais pas comment dire à mon script, attend que la copy runinng-config... soit terminée pour ensuite envoyer la copy config....? Je pourrai peût-être utiliser sleep mais je n'aime pas trop ;-)

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    C'est étrange, ton switch retournerait le prompt avant d'avoir fini la copie, comme s'il était multi-tâche ? Ça me surprendrait. Es-tu bien sûr que lorsque tu sors du waitfor après la copie, celle-ci ne s'est pas terminée ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    C'est étrange, ton switch retournerait le prompt avant d'avoir fini la copie, comme s'il était multi-tâche ? Ça me surprendrait. Es-tu bien sûr que lorsque tu sors du waitfor après la copie, celle-ci ne s'est pas terminée ?
    Je pourrai essayer avec un waitfo("% ACG configuration generation completed" );
    % ACG configuration generation completed --> étant la dernier ligne à la fin de commande copy.....

    après je reviens sur mon prompt stack#

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    S'il le prompt n'apparait pas avant "% ACG configuration generation completed", tu peux attendre simplement le prompt, comme tu le fais actuellement, et comme je te le suggérais avant.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    D'accord avec toi mais dans ce cas là mon 2° copy... ne se lance pas!

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Si tu attends "% ACG configuration generation completed" puis le prompt, ça devrait être pareil...
    Je mettrais donc cette temporisation de 1s, voire 5s pour avoir de la marge.
    Après tout, ton script n'est pas pris par le temps, non ?

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    quand je mets un sleep de 40 sec, cela se passe bien.

    Mais bon mon script devra se connecter sur une centaine de switch et j'essaye donc de perdre le moindre temps ;-)

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Tu as un guide de programmation pour tes switch ?

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Tu as un guide de programmation pour tes switch ?
    C'est à dire?

    Sinon avec un sleep de 15 sec cela fonctionne aussi

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Une notice expliquant le fonctionnement des commandes telnet du Switch et/ou expliquant comment le piloter à l'aide d'une programme externe.

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    Non mais je maîtrise assez bien les switchs.
    Je vais m'orienter vers un sleep de 15 sec ou voir juste un sauvegarde en ascii qui possède une taille plus petite.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 50
    Par défaut multitread
    hello,

    tu peux réduire le temps en faisant du multi-thread, comme ca, ça ne pose pas de soucis de mettre un delay :o)

    Sinon, je ne comprend pas trop le soucis, tu te connectes comment au switch ? avec quelle fonction fais tu le backup ?

    je fais la meme chose que toi (presque) sur des firewalls checkpoint et je ne rencontre pas de soucis...

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    ci-dessous mon code

    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
    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
     
    #!/usr/bin/perl
    use Net::Telnet;
     
     
    ########### DATE & TIME#################################
    ($sec,$min,$heure,$jour,$mois,$annee)= localtime time;
    $annee+=1900;
    $mois+=1;
     
    ###########OPENING FILE##################################
    unless (open ($file, "switch.txt")) { die ("cannot open file Switch.txt\n"); } #fichier qui contient les adresses et noms des switchs
    unless (open ($logfile, ">>syslog.txt")) { die ("cannot open file Log.txt\n"); } #fichier qui contient les sessions telnet échouées
     
     
    #############Variables################################################################################################
    $PROMPT='/.*[\$#:>\]\%] *$/';  #prend en compte n'importe caractères du prompt
    $SWITCH="switch"; 
    $PASSEPORT="passeport";
    $RADIUS_Y="radius";
    $RADIUS_N="no_radius";
    $TFTPSERVER='x.x.x.x';
    $TELNET = new Net::Telnet (Timeout => 20, Errmode=>'return');
     
     
    print $logfile("\n--------------------------------------- $jour/$mois/$annee $heure:$min:$sec ---------------------------------------\n");
     
    while ($line = <$file>)
    {
        ($HOST,  $NAME, $CODE, $RADIUS) = split(/;/, $line);
     
            if ($TELNET->open($HOST))
                {
                sleep 1;
                $TELNET->waitfor("Enter Ctrl-Y to begin.");
                $TELNET->put("\031") or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->print("user");
                sleep 1;
                $TELNET->print("password");
                sleep 5;
                $TELNET->waitfor("IP Configuration/Setup...");
                $TELNET->print("c") or die "=> cannot send C \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->waitfor("$PROMPT");
                $TELNET->print("enable") or die "=> cannot send enable \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->waitfor("$PROMPT");
                $TELNET->print("copy running-config tftp filename $NAME.ascii address $TFTPSERVER") or die "=> Echec de l'envoi copy running-config \n=> ".$TELNET->errmsg."";
                sleep 15;
                  $TELNET->waitfor("$PROMPT");
                $TELNET->print("copy config tftp filename $NAME.bin address $TFTPSERVER") or die "=> Echec de l'envoi copy config \n=> ".$TELNET->errmsg."";
                 sleep 1;
                 $TELNET->close;
                }
     
            else       
                {
                print $logfile ("cannot to make the backup for: $HOST $NAME at $jour/$mois/$annee $heure:$min:$sec");
                }
     
    }
     
    close ($file); 
    close ($logfile);
     
    <>; #Garde la fenêtre ouverte après la fin de l'exécution du script

Discussions similaires

  1. caculer le temps entre deux heures différentes
    Par andregoub dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/05/2007, 14h03
  2. Intervalle de temps entre deux clics et date.ToString
    Par calagan99 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 28/05/2007, 09h51
  3. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50
  4. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 09h33

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