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

Shell et commandes GNU Discussion :

Enchainement de commandes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 75
    Par défaut Enchainement de commandes
    Bonjour,

    je suis sur une appli vb6 qui se connecte sur un serveur linux contenant des bases mysql

    par un tunnel ssh j envoi des commandes au serveur pour zipper les fichiers que je viens de créer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd /data/mysql/backup_aes/BasesSQL;  for foo in *.sql; do tar -cjf `basename $foo .sql`.tar.gz $foo ; done
    une fois cette commande effectuée, le programme continue, j envoi mes fichiers zippés vers un autre serveur.

    le probleme c est que le "zippage" prend enormement de temps.
    mon programme vb continue a enchainer les lignes de commandes sans se soucier de savoir si l archivage est terminé...

    comment faire pour attendre la fin de l archivage de mes données avant de continuer le programme ??


    merci

  2. #2
    Membre confirmé Avatar de jula
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2003
    Messages : 81
    Par défaut
    salut,
    comme la plupart (toute?) les commandes, tar doit te renvoyer quelque chose (1,0?), il faut donc que tu attendes le retour de la fonction avant de continuer.
    comme je ne suis pas sûre je te conseille un man de tar et/ou d'attendre d'autres avis.
    cordialement,
    jula.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 75
    Par défaut
    comment on recupere la valeur de retour ??

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 75
    Par défaut
    j ai rien vu dans le man...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    tel que ta commande est ecrite elle devrait attendre la fin, depend de la manière donc vb6 gere le lancement de commande "systeme". sinon toute commande unix renvoie un code de resultat qui est dans la variables shell $? (uniquement LA derniere commande) pour la recuperer en vb6 je ne sait pas mais en shell : echo $? et elle s'affiche à l'ecran ou se test dans le shell : if (( $? )) ......

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 75
    Par défaut
    j arrive pas a recuperer le $?

    peux tu me donner la syntaxe please...

    le test se fera du genre
    if (($?)) = 0 then ...

    ??

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Par défaut Re: enchainement de commandes
    Citation Envoyé par mick84m
    mon programme vb continue a enchainer les lignes de commandes sans se soucier de savoir si l archivage est terminé...
    Une question comme ca, je ne m'y connais pas trop en VB: ca ne serait pas un probleme de l'appel systeme de VB qui n'attend pas la fin du programme pour continuer ? ( cf. http://vb.developpez.com/faq/?page=Systeme#shellwait, je l'avais utilise un jour ou j'avais du travailler en VBA..)

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    pas tout a fait la syntaxe du if fait que le then est "vue" comme une autre commande donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (( $? )) 
    then
       commande autre 
    fi
    pour la recuperation tout depend comment tu peut recuperer qqchoses depuis VB6 si j ai bien compris ......
    le problème dans ton cas c'est que tu execute plusieurs commande (boucle for) donc il te faudrai recuperer nom pas 1 mais plusieurs code retour , ce qui me parait pas possible
    il te faudrez ecrire un shell que tu lance et qui lui traiterai les different cas de figure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/bin/sh   
    cd /data/mysql/backup_aes/BasesSQL
    for foo in *.sql
    do 
       tar -cjf `basename $foo .sql`.tar.gz $foo 
       if (( $? != 0 ))
       then # cas d erreur       
            exit 1
       fi
    done
    exit 0
    le code retour et la fourrnie par le "exit"
    et lancer depuis VB un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_shell; echo $?
    ou toute autre commande qui te permettrai de recuperer $?, par exemple un :
    echo $? > fichier_de_retour
    et lire le contenue du fichier depuis VB

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 75
    Par défaut
    c est bon j ai trouve mon bonheur...j ai un peu bidouille mais ca marche.

    allez voir
    http://www.developpez.net/forums/vie...4bb974b2f2b40a

    merci !

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

Discussions similaires

  1. [Batch] problème sur l'enchainement des commandes
    Par tibofo dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 20/10/2012, 14h10
  2. subprocess - enchainement de commande
    Par tidusff10 dans le forum Général Python
    Réponses: 8
    Dernier message: 14/02/2012, 00h06
  3. Enchainement de deux commandes Popen
    Par bijean dans le forum Général Python
    Réponses: 2
    Dernier message: 05/07/2009, 18h11
  4. Réponses: 3
    Dernier message: 02/09/2002, 18h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 21h27

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