Partage
  • Partager sur Facebook
  • Partager sur Twitter

[BASH] Logger un script avec des entrées

Sujet résolu
    11 février 2021 à 15:40:04

    Salutations,

    Je cherche actuellement le moyen de logger sur un fichier, l'un de mes scripts en BASH. J'ai fait des recherches, et je suis tombé sur la commande EXEC qui aurait bien fonctionner. Le seul bémol c'est que j'utilise des READ dans mon script, et j'ai remarquer qu'avec EXEC, rien ne s'affiche dans le terminale.

    Je voulais donc savoir s'il y avait un moyen d'envois toutes les lignes du terminale, à partir du lancement du script, dans un fichier.

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2021 à 16:50:39

      salut,

      montre-nous ton script.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        11 février 2021 à 17:05:45

        Pour l'instant ce n'est qu'un teste, à terme, des actions s'effectueront lors de la saisit de certaines commandes :

        ---------------------------------------

        #!/bin/bash

        clear

        while true

        do

        read -p "[$(date +%H):$(date +%M):$(date +%S)]: " command

        echo "[$(date +%H):$(date +%M):$(date +%S)]: Command: $command"

        done

        ---------------------------------------

        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2021 à 17:48:47

          on ne voit pas ton emploi de exec.

          -
          Edité par dantonq 11 février 2021 à 17:49:05

          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            11 février 2021 à 17:50:26

            J'ai dis justement que l'utilisation de la commande EXEC, empêchait l'affichage, et donc que le script était inutilisable.
            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2021 à 18:18:31

              exec est la méthode correcte, mais pour voir dans le terminal les messages du script il faut ajouter un tee dans une substitution de processus
              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                11 février 2021 à 22:39:34

                Cela fonctionne, mais seul les entrées sont afficher dans le terminale, et les sorties dans le fichier log.

                -
                Edité par Srytx 11 février 2021 à 22:42:31

                • Partager sur Facebook
                • Partager sur Twitter
                  11 février 2021 à 23:51:38

                  montre-nous le script que tu utilises, son exécution dans le terminal, le résultat obtenu, et le résultat voulu.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    12 février 2021 à 10:12:47

                    Je m'étais trompé dans la syntaxe, voici le nouveau script :

                    ----------------------------------

                    #!/bin/bash

                    exec 1>console.log | tee console.log

                    clear

                    while true

                    do

                    read -p "[$(date +%H):$(date +%M):$(date +%S)]: " command

                    echo "[$(date +%H):$(date +%M):$(date +%S)]: Command: $command"

                    if [ "$command" == "exit" ]

                    then

                    exit

                    fi

                    done

                    ----------------------------------

                    Le terminale :

                    ----------------------------------

                    [10:11:52]: Command 1

                    [10:11:57]: Command: Command 1

                    [10:11:57]: Command 2

                    [10:12:00]: Command: Command 2

                    [10:12:00]: exit

                    [10:12:02]: Command: exit

                    ----------------------------------

                    Le fichier log est vide alors que je voudrais :

                    ----------------------------------

                    [10:11:52]: Command 1

                    [10:11:57]: Command: Command 1

                    [10:11:57]: Command 2

                    [10:12:00]: Command: Command 2

                    [10:12:00]: exit

                    [10:12:02]: Command: exit

                    ----------------------------------

                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 février 2021 à 10:38:17

                      exec > >(tee -a console.log)

                      le 1 (stdout) est implicite.

                      mais, read envoie son prompt sur stderr, donc :

                      exec &> >(tee -a console.log)

                      & étant la redirection de stdout et stderr


                      par contre, tu n'auras pas la saisie de l'utilisateur.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                        12 février 2021 à 11:02:09

                        Merci pour ton aide ! Pour avoir la saisie de l'utilisateur j'ai simplement ajouter "echo "[$(date +%T)]: Command: $command" >> fichier.log" Bonne continuation.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        [BASH] Logger un script avec des entrées

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown