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 :

Trapper un mot dans un fichier de type log et écrire dans un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut Trapper un mot dans un fichier de type log et écrire dans un fichier
    Bonjour,

    Je dispose d'un fichier log qui s'alimente à chaque instant, et lorsqu'un mot donné apparaît sur une ligne, je souhaiterais copier la ligne où apparaît la mot dans un fichier et ainsi de suite.

    Exemple simple pour comprendre :

    Fichier my_log en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    service auditd redémarré le 19:04:2021 à 17H30
    service ntpd redémarré le 19:04:2021 à 17H31
    service snmpd redémarré le 19:04:2021 à 17H32
    service postfix redémarré le 19:04:2021 à 17H33
    service https redémarré le 19:04:2021 à 17H34
    Je voudrais que lorsqu'une ligne contenant ntpd ou https apparaît, la ligne en question soit copiée dans un fichier à part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service ntpd redémarré le 19:04:2021 à 17H31
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    service ntpd redémarré le 19:04:2021 à 17H31
    service https redémarré le 19:04:2021 à 17H34
    ... et ainsi de suite.....

    Donc un petit script qui check my_log et qui "trappe" les lignes contenant des mots clés.

    Merci pour vos idées.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Ce n'est pas ce que permet grep ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut
    Merci pour ta réponse.
    Je souhaite envoyer une commande qui check en permanence le fichier log… Tu voudrais dire d’envoyer une commande GREP toutes les cinq secondes par exemple ?

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    la commande tail -f .... | grep .... >fichier.log le tout encapsulé dans un nohup devrait le faire.

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Par défaut
    Merci beaucoup.

    Le but est de lancer la commande, qu'on en entende plus parler et qu'elle "fasse le job".

    Donc en ligne de commande, on pourrait donc lancer la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nohup tail -f log.txt | grep "toto" >> my_journal.txt &
    Chaque fois que "toto" apparaît dans le fichier log.txt, la ligne contenant "toto" est copiée dans le fichier my_journal.txt.

    Le "&" combiné au "nohup" permet de lancer la commande en arrière plan… j'aurais préféré via un script…. comment faire ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par kevin066 Voir le message
    j'aurais préféré via un script…. comment faire ?
    Je ne suis pas sûr de bien comprendre ce que tu veux dire par "j'aurais préféré via un script"

    Que veux-tu d'autre que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo 'nohup tail -f log.txt | grep "toto" >> my_journal.txt &' > ./my_script.sh
    chmod +x ./my_script.sh
    ./my_script.sh

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

Discussions similaires

  1. Ecrire une ligne dans un fichier de log
    Par Carmichael dans le forum C++Builder
    Réponses: 1
    Dernier message: 12/09/2018, 13h35
  2. Ecrire sur une ligne dans un fichier texte
    Par 1euro dans le forum Ruby
    Réponses: 4
    Dernier message: 18/05/2017, 18h51
  3. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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