Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/10/2013, à 11:11

Reyfild

Questions script avec sed et grep

Bonjour à tous,

Ne sachant pas encore correctement me servir des outils grep / sed, je viens vous demandez un peu d'aide !

Je souhaite récupérer les logs de coova-chilli et les mettres en forme dans un fichier à part.

Les logs sont comme ceci : Oct 1 10:58:00 NomPC coova-chilli[chiffres]: chilli.c chiffres: Client MAC=XX-XX-XX-XX-XX-XX assigned IP XXX.XXX.XXX.XXX

J'aimerais récupérer la date compléte avec le nom du PC, son address MAC et son IP assigné. Mais le problème c'est de reconnaitre cette ligne en particulier.

il faudrai que j'analyse la ligne et qu'elle contienne "Client" + "coova-chilli", pour ensuite en extraire les informations.

j'ai essayé de faire une commande mais je ne sais pas associé 2 recherches grep en même temps :

grep 'Client' /var/log/syslog | sed -n -e "s/^[[:space:]]*IP \(\([0-9]\{1,3\}.\)\{3\}[0-9]\{1,3\}\).*$/\1/p"

Merci d'avance !

Hors ligne

#2 Le 01/10/2013, à 11:25

pingouinux

Re : Questions script avec sed et grep

Bonjour,
Pour récupérer les lignes contenant à la fois "coova-chilli" et "Client" :

grep 'coova-chilli.*Client' /var/log/syslog

Hors ligne

#3 Le 01/10/2013, à 13:53

Reyfild

Re : Questions script avec sed et grep

Merci pour cette indication ! Je me suis dit que plutot retrier totalement les logs, j'allais les reprendres, ils sont assez explicit.

J'ai donc fais un :

grep 'coova-chilli.*IP' /var/log/syslog > /home/logsCC.txt

J'aimerai cependant que la commande s'éxécute toute seule lorsque une nouvelle entrée d'un client ce fait. Pour cela je pense qu'il va faloir que je compare le fichier logsCC.txt par rapport au /var/log/syslog. Comme puis-je réaliser cette manipulation ?

EDIT : Je fais :

grep 'coova-chilli.*IP' /var/log/syslog > fichier1.txt
grep 'coova-chilli.*IP' /var/log/syslog > fichier2.txt
diff fichier1.txt fichier2.txt > fichier3.txt

le problème c'est que dans le fichier 3 j'ai que les changements apporté, j'aimerais avoir l'avant + la diff.
Comment l'automatisé lorsqu'il y a un changement ?

Dernière modification par Reyfild (Le 01/10/2013, à 14:10)

Hors ligne

#4 Le 02/10/2013, à 09:03

pingouinux

Re : Questions script avec sed et grep

La commande inotifywait pourrait convenir.
Voici un exemple tiré de man inotifywait, que tu peux adapter :

Example 2
       A short shell script to efficiently wait for httpd-related log messages
       and do something appropriate.

       #!/bin/sh
       while inotifywait -e modify /var/log/messages; do
         if tail -n1 /var/log/messages | grep httpd; then
           kdialog --msgbox "Apache needs love!"
         fi
       done

Hors ligne