Lancer un script depuis un autre (log et code retour)

Résolu
Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   -  
Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour tout le monde,

Voilà je fais un script dans lequel je lance un autre script.
Rien de bien extraordinaire pour le moment...

Chaque script est enregistré dans un fichier de log différent et chacun gère sa log

Mon but est donc de :
- Lancer un script script2 depuis script1
- Afficher la log de script2 dans celle de script1
- La sortie console doit rester normale et contenir les deux scripts
- On garde les deux fichiers de log
- Je récupère le code retour de script2 dans script1

J'ai cherché j'ai deux solutions :
- ./script2 params | tee -a $LOG (ça marche comme il faut mais je n'ai pas le code retour)
- ./script2 params >> $LOG (super mais non j'ai plus la sortie console)

Voilà y'a peut-être un truc tout bête qui m'échappe...



--
Si vous ne réussissez pas du premier coup, appelez ça version 1.0

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    avec pipefail, le $? est celui de script2 et pas de tee
    set -o pipefail
    ./script2 params | tee -a $LOG
    echo $?
    1
    1. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      Ok super ça marche !
      Juste une dernière question :
      Comment je fais pour annuler sa après ?
      0
    2. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      J'ai pas trouvé dans le man... '-_-
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      set +o pipefail
      0
    4. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      vu que sa marche pour set -x...
      La réponse semble logique d'un coup...

      Désolé du dérangement et encore milles merci =)
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      on peut aussi utiliser PIPESTATUS, pas besoin de set + ou -
      $ ls xx | tee zz
      ls: cannot access xx: No such file or directory
      $ echo $?
      0
      $ ls xx | tee zz
      ls: cannot access xx: No such file or directory
      $ echo ${PIPESTATUS[0]}
      2
      $ 
      0
  2. arthurg95 Messages postés 2440 Date d'inscription   Statut Membre Dernière intervention   343
     
    Bonjour,

    Et en faisant :
    ./script2 params > tmp
    cat tmp >> $LOG
    cat tmp

    Pas super optimisé, mais c'est simple et normalement ça marche ;)
    0
    1. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      oui certes sa marche...
      Mais comme tu dis pas super optimisé. ^^
      En plus techniquement je crée la log à l'aide d'une fonction qui permet de dater le script
      Exemple :
      fctlog "Coucou" $LOG

      Affiche "Coucou" sur l'écran et "240713_15h32m Coucou" dans la log.

      Je suis compliqué hein ^^
      0
    2. Utilisateur anonyme
       
      Oui tu cherches les bestioles lol ^^
      0
    3. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      Je sais bien ! =3
      Mais t'as pas idée comment c'est pratique pour mesurer un traitement par exemple.
      0
    4. Utilisateur anonyme
       
      C'est l'infinie avec PHP ^^, Je suis en retard là dessus lol
      Ben bon courage !!!
      0
    5. Lapourax Messages postés 2970 Date d'inscription   Statut Contributeur Dernière intervention   336
       
      php ça fait pas tout !
      Bref merci pour ton passage et ton soutiens. =)
      0