[Shell] Ecrire dans un fichier pendant l'execution du processus

Résolu/Fermé
Borket - 8 avril 2016 à 10:24
 Borket - 8 avril 2016 à 12:59
Bonjour,

J'ai écrit un script en shell du type
commande >> fichier
pour écrire le résultat dans un fichier, puis j'ai fait en sorte qu'il s’exécute au démarrage.
Mais le script écrit dans le fichier que lorsque je tue le processus, et je voudrais plutôt qu'il écrive pendant le processus.

Est-ce que c'est possible?
Merci d'avance

2 réponses

ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 306
8 avril 2016 à 10:29
Hello,

oui tout est possible.

C'est quoi la commande que tu rediriges et qui ne s'écrit pas. Normalement au pire en faisant
tail -f /chemin_vers/log_Name
tu dois être en mesure de voir un log en cours d'écriture ...
0
Salut,

Pour résumer il s'agit d'une capture de trame avec tshark et un grep pour récupérer uniquement ce qui m'interesse.
Mais le fichier de log reste a 0 octets et
tail -f /chemin/log
ne donne rien jusqu’à que je fasse
pkill tshark
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 306
Modifié par ryko1820 le 8/04/2016 à 10:51
grep ne dois pas apprécier la façon dont tshark lui passe les données.
Plusieurs syntaxe sont possible du "|" au "<<<" jusqu'à une boucle
commande 2>&1 |
{
while read line;do
echo "$line" | grep "blah"
done;
}

Pour les trucs récalcitrants ...

Là, sans plus d'info je dirais que ton grep attends les données a filtrer ...
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 306
Modifié par ryko1820 le 8/04/2016 à 11:04
Hello,

Chez moi :

tshark 2>&1 | { while read line;do echo "$line" | grep "Chaine_cherchée";done; }
.

sur une ligne fonctionne ....

You may stop me but you can't stop us all   ;-)
0
Je teste ça
0
ryko1820 Messages postés 1645 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 306 > Borket
Modifié par ryko1820 le 8/04/2016 à 11:53
... et
tshark 2>&1 | { while read line;do echo "$line" | grep "Chaine_cherchée";done; } >> fichier.txt &

Pour pouvoir lancer cette ligne dans une console et dans la même console taper :
tail -f fichier.txt

Pour voir comment le fichier s'écrit ...

Mais chez moi tout marche, même :
tshark | grep "chaine_cherchée"


Dans un shell script ça donnerait :

#!/bin/bash
#
# Script test grep sur tshark (testTshark.sh)
# Appel par 'testTshark.sh chaineRecherché &'
# ou 'testTshark.sh "chaine Recherché" &' si espace dans la chaine recherché
#
tshark 2>&1 | grep "$1" >> testTshark.log


(chmod 775 testTshark.sh)

et pour le lancer :

./testTshark.sh chaine_recherchée &


et pour voir comment le log grossit :

tail -f testTshark.log
(CTRL+C pour sortir)

et effectivement
pkill tshark
ou
pkill testTshark.sh
pour arrêter

le
&
après le lancement de commande est important car c'est lui qui fait passer le process en background et rends la main pour pouvoir continuer a taper des trucs dans la console ...
0
Merci pour tout ça fonctionne !
0