Forum debian-fr.org

Rechercher:

* Connexion   * M’enregistrer

* FAQ    * Rechercher





Poster un nouveau sujet Répondre au sujet  [ 25 messages ] 
Auteur Message
MessagePosté: 31 Mai 2012 10:05 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Bonjour à tous !

J'ai un service DHCP en place sous Debian, j'ai fait redirigé les log DHCP vers un fichier spécifique. Maintenant que ces données là sont répertoriées, j'aimerais pouvoir extraire certaines lignes contenant des mots clés comme "DHCPACK" (sachant qu'une ligne peut se trouver sur deux oO) et les envoyer vers un nouveau fichier log.

La commande serait du style tail -f mon_fichier_log > grep -e "regexp" > nouveau_fichier_log

Mais je ne maîtrise pas du tout les regexps.

Quelqu'un peut-il m'aider ?


Merci d'avance


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 10:33 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Bonjour,

Pour récupérer les lignes contenants "DHCPACK" avec la ligne suivante :
Code:
grep --after-context=1 "DHCPACK"


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 10:43 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Quand j’exécute cette commande, effectivement il me sort les lignes contenants DHCPACK mais pas seulement ! J'ai fait un screen pour vous montrer. De plus j'aimerais intégrer cette commande à celle du premier post pour pouvoir rediriger les résultats vers un autre fichier log.


Fichiers joints:
test.png
test.png [ 4.11 Kio | Vu 226 fois ]
Haut
 Profil  
 
MessagePosté: 31 Mai 2012 10:50 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
jeremetalain a écrit:
il me sort les lignes contenants DHCPACK mais pas seulement

jeremetalain a écrit:
sachant qu'une ligne peut se trouver sur deux oO

L'option --after-context=1 permet de sélectionner une ligne de "contexte" après la ligne contenant "DHCPACK". Peut-être ai-je mal compris ton besoin, auquel cas tu peux retirer l'option.



jeremetalain a écrit:
j'aimerais intégrer cette commande à celle du premier post

Code:
tail -f mon_fichier_log | grep --after-context=1 "DHCPACK" > nouveau_fichier_log


[edit] c'est un | et non un > entre le tail et le grep


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 10:55 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Concernant l'after-context, c'est de ma faute je me suis mal exprimé.

jeremetalain a écrit:
j'aimerais intégrer cette commande à celle du premier post

Code:
tail -f mon_fichier_log > grep --after-context=1 "DHCPACK" > nouveau_fichier_log
[/quote]

Cette commande ne fonctionne pas, le message d'erreur est:

"tail: impossible d'ouvrir "DHCPACK" en lecture: Aucun fichier ou dossier de ce type"


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 10:57 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Je viens d'éditer (juste avant que tu post) mon post du dessus car il y avait une petite erreur.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 11:19 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Merci. Le problème de cette commande est qu'elle tourne en boucle.

Du coup je suis obligé de faire "grep "DHCPACK" /var/log/dhcpd.log > /var/log/toto.log"
Puis tail /var/log/toto.log pour visualiser les résultats.

Mais ce fonctionnement oblige à toujours exécuter la première commande; je ne penses pas que ce soit possible mais existe t-il un moyen pour que ce soit simultané ? création d'un script ??


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 11:34 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Je ne suis pas sur de comprendre ce que tu veux faire.

Soit tu laisses tourner en tâche de fond la première commande et tu consultes le nouveau_fichier_log quand tu en as besoin.

Soit tu lance le grep seulement quand tu en as besoin. Si tu veux alors avoir le résultat et dans un fichier et à l'écran, tu peux utiliser "tee" :
Code:
grep "DHCPACK" /var/log/dhcpd.log | tee /var/log/toto.log


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 11:41 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Laisser tourner en tâche de fond la première commande, d'accord mais j'aimerais pouvoir utiliser mon serveur en même temps; ce qui n'était pas le cas quand j'exécutais cette commande (obligé de faire Ctrl + c pour sortir).


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 11:48 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Pour lancer une commande en tâche de fond, il suffit d'ajouter un & à la fin de la commande :
Code:
tail -f mon_fichier_log | grep "DHCPACK" > nouveau_fichier_log &


Et si tu as oublié le &, tu peux passer la commande en arrière plan en faisant Ctrl+z puis en entrant la commande bg.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 13:30 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
D'accord. Mais quand j'exécute cette commande le fichier que je souhaite remplir est vide alors qu'il se remplit correctement lorsque je fait uniquement la commande grep.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 13:45 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
tail -f retourne les 10 dernières lignes (paramétrable avec l'option -n) du fichier + les lignes qui sont ajoutées dans le fichier après le lancement de la commande. Alors qu'en faisant uniquement le grep, le fichier est lu en entier à un instant t.

On peut éventuellement combiner le deux comme ceci :
Code:
grep "DHCPACK" > nouveau_fichier_log ; tail -f -n 0 mon_fichier_log | grep "DHCPACK" >> nouveau_fichier_log &

Mais on n'est pas à l'abri de louper des lignes entre le premier grep et le tail.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 15:24 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Ce qui est fou, c'est que cela fonction avec DHCPDISCOVER mais pas avec DHCPACK alors que quand je visualise mon fichier log principal, il y a du DHCPACK ! :-?


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 15:37 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Qu'est-ce qui fonctionne avec DHCPDISCOVER mais pas avec DHCPACK ? (quelles commandes ?)


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 15:39 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
tail -f -n 0 mon_fichier_log | grep "DHCPDISCOVER" > nouveau_fichier_log &

Cette commande remplit correctement le fichier mais pas quand je remplace DHCPDISCOVER par DHCPACK.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 15:57 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
jeremetalain a écrit:
quand je visualise mon fichier log principal, il y a du DHCPACK !

Ces lignes sont bien arrivées dans mon_fichier_log après que tu ais lancé la commande ? (car la commande ne lit que les lignes qui arrivent dans le fichier après son lancement)

Pour tester, tu peux créer de nouvelle ligne dans mon_fichier_log avec la commande :
Code:
echo "ma nouvelle ligne avec DHCPACK" >> mon_fichier_log


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 16:04 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
J'ai fait exactement ça et il n'y a toujours rien dans le nouveau fichier alors que si je fais simplement un grep "DHCPACK" mon_fichier_log, je vois bien la ligne que j'ai fait afficher !


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 16:21 
Hors ligne
Très bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Juil 2008 11:08
Messages: 459
Localisation: Nantes
Peux-être (et j'ai plus beaucoup d'idée) en remplaçant tail -f par tail -F ?


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 16:42 
Hors ligne
Vraiment, particulièrement bavard(e)!
Avatar de l’utilisateur

Inscription: 28 Fév 2008 01:26
Messages: 3094
jeremetalain a écrit:
J'ai fait exactement ça et il n'y a toujours rien dans le nouveau fichier alors que si je fais simplement un grep "DHCPACK" mon_fichier_log, je vois bien la ligne que j'ai fait afficher !
Juste par curiosité:
Code:
wc -l /ton/fichier/log
(-l => L minuscule... ;) )
et
Code:
grep -n DHCPACK /ton/fichier/log



:006

_________________
France schizophrene aux valeurs hypocrites(...),ce n'est pas ton peuple collabo qui s'est battu contre l'Occupation!
---
"La liberté comme base, l'égalité comme moyen, la fraternité comme but."
Ricardo Mella in "El ideal anarquista"


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 16:56 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Num's a écrit:
Juste par curiosité:
Code:
wc -l /ton/fichier/log
(-l => L minuscule... ;) )


J'obtiens
Code:
129895 /ton/fichier/log

Num's a écrit:
et
Code:
grep -n DHCPACK /ton/fichier/log


La dernière a le numéro 129888.


Dernière édition par jeremetalain le 31 Mai 2012 17:03, édité 1 fois.

Haut
 Profil  
 
MessagePosté: 31 Mai 2012 16:59 
Hors ligne
Vraiment, particulièrement bavard(e)!
Avatar de l’utilisateur

Inscription: 28 Fév 2008 01:26
Messages: 3094
jeremetalain a écrit:
J'obtiens les lignes qui contiennent DHCPACK.
ça, je m'en doutais... ce que je voulais c'est les n° de ligne (-n), surtout celui de la dernière occurrence... :think: :whistle: :roll:


:006

_________________
France schizophrene aux valeurs hypocrites(...),ce n'est pas ton peuple collabo qui s'est battu contre l'Occupation!
---
"La liberté comme base, l'égalité comme moyen, la fraternité comme but."
Ricardo Mella in "El ideal anarquista"


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 17:03 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Je viens d'éditer mon dernier post.


Haut
 Profil  
 
MessagePosté: 31 Mai 2012 17:27 
Hors ligne
Vraiment, particulièrement bavard(e)!
Avatar de l’utilisateur

Inscription: 28 Fév 2008 01:26
Messages: 3094
C'est bizarre, tu devrais avoir au moins cette ligne du coup... (129895-10<129888)... du coup, je ne vois pas... :think:


:006

_________________
France schizophrene aux valeurs hypocrites(...),ce n'est pas ton peuple collabo qui s'est battu contre l'Occupation!
---
"La liberté comme base, l'égalité comme moyen, la fraternité comme but."
Ricardo Mella in "El ideal anarquista"


Haut
 Profil  
 
MessagePosté: 01 Juin 2012 09:36 
Hors ligne
Nouvel utilisateur

Inscription: 31 Mai 2012 09:54
Messages: 12
Avec la commande suivante le fichier se remplit correctement:

Code:
cat /mon/fichier/log | grep DHCPACK > /nouveau/fichier/log


Mais le problème est que ça n'est pas automatique et que le fichier va devenir gigantesque. Peut-on garder que les 200 dernières lignes par exemple ?


Haut
 Profil  
 
MessagePosté: 01 Juin 2012 15:10 
Hors ligne
Grand posteur
Avatar de l’utilisateur

Inscription: 01 Nov 2010 16:29
Messages: 149
Localisation: Au pays du bas débit (Creuse)
Déjà à priori si je ne m'abuse dans
Code:
tail -f -n 0,
tu lui dis de prendre les 0 dernières lignes.
Si tu veux les 200 dernières lignes je dirais
Code:
tail -f -n 200 /mon/fichier/log | grep DHCPACK > mon/nouveau/log

mais là il écrase au fur et à mesure ce qui pourrais te faire perdre des lignes intéressantes si tu gardes pas les yeux dessus en permanence.
Sinon tu pourrais faire une règle crontab qui te lance la commande toutes les minutes ou heures ou autre et enlever le -f de tail.

_________________
Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 25 messages ] 

Index du forum » Forums d'aide » Support Debian


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Flux RSS Flux RSS Liste des flux Liste des flux
Powered by phpBB® Forum Software © phpBB Group
Traduction par: phpBB-fr.com
SEO
[ Time : 0.365s | 18 Queries | GZIP : Off ]