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 :

[Bash] Attendre qu'un processus soit complété (et non fini) avant d'exécuter les instructions suivantes


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut [Bash] Attendre qu'un processus soit complété (et non fini) avant d'exécuter les instructions suivantes
    Bonjour.

    Ma machine tourne sur Ubuntu 18.04.3 et la version de Bash est 4.4.20.

    L'idée principale est la suivante:
    ###Lancer tor & polipo
    ./lancementTorPolipo.sh start 1 5
    #Attendre que les circuits tor soit complété par "Bootstrap 100% done" ce qui met un peu de temps
    #Ensuite, et seulement ensuite
    ./autreScriptQuiDépendDesCircuitsDeTor.sh


    Voici un extrait du fichier ./lancementTorPolipo.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mode=$1
    minimum=$2
    maximum=$3
    if [ $mode = "start" ]; then
        for i in `seq $minimum  $maximum`;
        do
            tor -f /etc/tor/torrc$i &
        done
    fi
    Comme vous le voyez les instances de Tor sont lancés via la commande tor -f /etc/tor/torrc. C'est très différent que de le lancer comme un service/deamon comme vous le savez je pense, et je vais aborder le point ensuite.

    Donc, à l'heure actuelle je ne sais pas comment automatiser dans un script bash le fait d'attendre que les circuits soient tous complets: Bootstrapped 100%: Done.
    Je précise d'avance que la commande wait comme on me l'a proposé ailleurs n'est absolument pas ce que j’attends. Cette dernière attends que le processus (PID) disparaisse. Moi j'attends au contraire qu'il soit toujours présent.
    Je ne souhaite pas envisager la commande sleep non plus. L'attente dépendant du nombre de circuits créés et puis d'autres facteurs que je ne maîtrise pas.

    Je reviens maintenant sur les services/deamons. J'ai cherché ce qu'était les status pour les services, notamment avec les commandes de systemctl. J'aimerais savoir si pour vous c'est une piste envisageable pour répondre à mon problème que de lancer ces instances de torrc comme des services ou si on peut se passer de cela ? Autrement dit y a-t-il d'autres moyens? Déjà qu'est ce qui serait le plus à faire ?

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Bonjour,

    Je n'utilise pas tor, pourrais-tu donc préciser où l'on trouve le fameux "Bootstrap 100% done" à l'écran ou dans un log ?

    par exemple, si c'est dans un log, quelque chose comme ci-dessous devrait le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -n +1 -f log | grep -m 1 "Bootstrap 100% done"
    Ceci te rendra la main dés que la regex est trouvée
    Cordialement.

  3. #3
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    Je pense que l'on peut dire que c'est un log. Vous me direz si je me trompe.

    Quand je lance le script avec la commande ./lancementTorPolipo.sh start 1 5 ça donne une sortie dans le shell tel que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (base) avy@machine:/~$ Sep 10 13:38:04.996 [notice] Tor 0.3.2.10 (git-0edaa32732ec8930) running on Linux with Libevent 2.1.8-stable, OpenSSL 1.1.1, Zlib 1.2.11, Liblzma 5.2.2, and Libzstd 1.3.3.
    Sep 10 13:38:04.998 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
    Sep 10 13:38:04.998 [notice] Read configuration file "/etc/tor/torrc1".
    ...#j'en passe
    Sep 10 13:38:04.998 [notice] Read configuration file "/etc/tor/torrc5".
    ...#j'en passe encore
    Sep 10 13:38:09.000 [notice] Bootstrapped 100%: Done
    Sep 10 13:38:09.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
    Sep 10 13:38:09.000 [notice] Bootstrapped 100%: Done
    Sep 10 13:38:09.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
    Sep 10 13:38:09.000 [notice] Bootstrapped 100%: Done
    Comme vous le voyez Bootstrapped 100% apparaît autant de fois qu'il y a d'instances lancées. Donc j'ai aussi une contrainte technique qui est d'attendre d'avoir le bon nombre de fois ce message avant de lancer les instructions suivantes.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Dans ce cas, il suffit de remplacer le 1 du grep -m 1 "..." par le nombre désiré.
    Cordialement.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    Citation Envoyé par polipo
    [...]HTTP proxies are no longer useful: most traffic is encrypted, and a web proxy merely acts as a dumb intermediary for encrypted traffic.
    lire la suite
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    @N_BaH Autant pour moi j'ai cru que c'était dans le log que j'avais copié. Donc je refais le message.

    Oui je suis au courant de ce que vous mentionnez. Mais ça marche très bien. En utilisant la commande de curl --proxy 127.0.0.1ortDuProxy -L https://check.torproject.org/api/ip je vois que j'ai bien une adresse IP de Tor. Donc ça fonctionne. Dites-moi ce qui vous inquiète avec ces grands yeux: .

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Bon, c'est plus compliqué que prévu, le tail -f sur fichier ne rend pas la main lors d'un broken pipe...

    J'exposerai une solution dans la soirée, quand je serais sur mon pc perso.
    Cordialement.

  8. #8
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut Réussite de la création des logs
    @disedorgue Je ne sais pas comment vous obtenez le fichier le log pour votre part. De mon côté j'essaie de paramétrer dans les différents fichier torrc le dossier et fichier de log comme indiqué dans la documentation. Malheureusement j'ai beau faire comme ils disent ça ne veut pas pour l'instant.

    MAJ:
    Maintenant c'est réussi. Je confirme que la commande proposé ne rend pas la main si elle ne trouve pas le motif en question. Je me penche sur les signals voir si c'est envisageable.

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    il n'est pas dit que ça ne fonctionne pas, mais que ce n'est plus utile (« no longer useful »).

    je ne savais pas ce qu'est polipo, je suis donc allé sur leur site pour en apprendre plus.
    et là, choc! : "plus maintenu", "plus utile"...

    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    @N_BaH pour ma part c'est encore très utile pour utiliser scrapy qui ne peut se contenter de Tor seul, mais doit passer par un proxy HTTP. J'ai déjà essayé de voir pour utiliser Tor seul. Ce fut sans succès.

  11. #11
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    Si j'ai bien compris ton besoin au niveau du proxy http, tu pourrais peut-être plutôt utiliser privoxy (qui lui est maintenu), comme la faq de tor le "recommande" (en fait ils recommandent plutôt d'éviter de passer par un proxy http, mais bon…) : https://2019.www.torproject.org/docs...n#TBBSocksPort

  12. #12
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Citation Envoyé par AvySamaj Voir le message
    @disedorgue Je ne sais pas comment vous obtenez le fichier le log pour votre part. De mon côté j'essaie de paramétrer dans les différents fichier torrc le dossier et fichier de log comme indiqué dans la documentation. Malheureusement j'ai beau faire comme ils disent ça ne veut pas pour l'instant.
    Comme j'ai dit, je n'utilise pas tor, donc je ne m'occupe pas de ce souci, je te laisse voir...

    Par contre, dans la doc, ils disent que par défaut, les log sortent sur stdout, donc en rajoutant une redirection vers un fichier de log par process tor, ça devrait le faire...

    J'ai une autre question: tes processus tor restent vivant à la mort du shell qui les lancent ?
    Cordialement.

  13. #13
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    J'ai réussi pour les logs, j'ai mis à jour le message.

    Ce que je comprend par "mort du shell "c'est de lancer la commande et faire Ctrl+C pour avoir de nouveau la main.
    Si tel est le cas, oui les processus tor pour moi sont toujours vivant car à la suite de ça la commande ps aux | grep torrc$i | awk '{print $2}' renvoi des PIDs. C'est pour ça que je ne pouvais pas me contenter de wait.

  14. #14
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Non, le test à faire:
    -Ouvrir une fenêtre et lancer depuis celle-ci ton script de lancement de tor.
    -Fermer la fenêtre
    -Ouvrir une autre fenêtre et faire le ps pour voir si cela retourne quelque chose.
    Cordialement.

  15. #15
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    En suivant vos instructions ps aux | grep torrc$i | awk '{print $2}' me renvoi bien plusieurs PIDs.

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    C'est normal que cela ne rend pas la main quand il ne trouve pas le pattern, c'est le principe.

    Par contre, contrairement d'autres tests fait sur du redhat, sur ma ubuntu, la commande me rend bien la main quand le pattern est trouvé les n fois demandé au grep.

    Donc, cela doit dépendre soit d'une option du shell soit d'une évolution de tail.

    Est-ce que chez toi, la commande rend la main quand il trouve le pattern les n fois demandé ?
    Cordialement.

  17. #17
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    Citation Envoyé par AvySamaj Voir le message
    En suivant vos instructions ps aux | grep torrc$i | awk '{print $2}' me renvoi bien plusieurs PIDs.
    Ok, dans ce cas, pas de souci, c'est tor qui gère lui-même le décrochage à son processus père.
    Cordialement.

  18. #18
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut
    Quand le pattern est trouvé oui il me rend la main.
    Je n'ai pas essayé, de voir ce que donnait commande tandis que le fichier log se complète et donc qu'il n'a pas encore écrit le pattern voulu.
    Toutefois si ça vous parait normal, et c'est que je comprend quand je vous lis, alors je n'ai plus qu'à tisser autour de cette commande et je vous ferais un retour.

  19. #19
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 273
    Points : 12 708
    Points
    12 708
    Par défaut
    S'il ne rend pas la main tant que les pattern ne sont pas trouvés et qu'il rend la main s'ils sont trouvés, c'est bien le principe recherché, donc c'est ok.

    De plus, tu as le droit de lui fournir plusieurs fichiers de logs, il le gère en principe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -n +1 -f fihierlog1 fichierlog2 fichierlogn | grep -m n pattern_recherche
    Cordialement.

  20. #20
    Membre régulier Avatar de AvySamaj
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 118
    Points : 75
    Points
    75
    Par défaut Problème résolu.
    C'est une solution qui marche pour moi.

    Voici ci-dessous le fichier de lancement de l'ensemble (pour le test):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
    debut=$1
    fin=$2
     
    ./lancementTorPolipo.sh start $debut $fin
     
    for i in `seq $debut $fin`; do
    	tail -n +1 -f /var/log/tor$i/debug.log | grep -m 1 "Bootstrapped 100%" #le nombre d'instances étant variable, j'ai préféré la boucle qui dépend du nombre d'instances.
    done
     
    echo "Normalement le lancement est terminé ici"
    Cette fois-ci l'affichage du message Normalement le lancement est terminé ici s'affiche bien une fois à la fin de ce que j'attends. Sans ça, cela s'affiche bien avant la fin de l'écriture du log concernant l'établissement des circuits. Ça change la donne. Donc je considère qu'en l'état des choses c'est résolu. Si ça ne va plus je reviendrai.
    Merci beaucoup @disedorgue d'avoir pris le temps de me proposer une solution qui marche. Très sincèrement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB.NET] Attendre qu'un thread soit terminé
    Par Kiboumz dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/12/2006, 10h28
  2. attendre qu'un fichier soit modifier
    Par narkhor dans le forum C++
    Réponses: 13
    Dernier message: 04/08/2006, 20h51
  3. [C#] Attendre que l'application soit lancée ?
    Par choas dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/05/2006, 21h39
  4. Attendre qu'un thread soit suspendu !
    Par pi05 dans le forum MFC
    Réponses: 1
    Dernier message: 24/06/2005, 10h58
  5. [API Windows]Attendre qu'une fenetre soit dessinee
    Par VoLc0m dans le forum Windows
    Réponses: 21
    Dernier message: 13/05/2005, 15h11

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