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 11/01/2011, à 12:01

tuxidermiste

Script de décompression et recherche

Bonjour tout le monde,

Voilà j'ai un travail assez pénible qui m'attend ce soir, à savoir traiter une quantité faramineuse de fichiers logs (web, ftp, ssh) sur deux ans.

Quelqu'un pourrait-il m'aider à écrire un petit script qui me permette d'extraire tous les fichiers .log.gz d'un dossier vers un autre, et ensuite de chercher parmis tous ces fichiers .log les lignes contenant le mot RICE précédé ou suivi d'autres lettres/espaces/... ?

Ca fait longtemps que je n'ai plus fait de bash, donc limite même si quelqu'un ne veut pas le faire s'il peut juste me mettre sur la voie ce serait sympa smile

Mon approche (peut-être mauvaise?) :
Moi je comptais utiliser la commande pour décompresser tous les fichiers .log.gz vers un autre (je ne m'en souviens plus mais j'irais chercher ^^), ensuite faire un cat de tous ces fichiers suivis d'un grep sur RICE.
Seulement le hic c'est qu'il me semble qu'il va bien m'afficher les lignes dans lesquelles je trouverais le mot rice, mais pas le nom des fichiers dans lesquels il a trouvé RICE...

Merci d'avance pour votre aide smile


Sony VAIO VPCEB2M1E + Kubuntu 11.10

Hors ligne

#2 Le 11/01/2011, à 12:13

time132

Re : Script de décompression et recherche

Bonjour,

Le cat est inutile à mon avis.

A la racine de tout tes logs tu fais un

grep -r RICE .

Le -r sert à la récursivité.
grep t'indiquera le fichier et la ligne où il trouve le mot recherché.

Dernière modification par time132 (Le 11/01/2011, à 12:14)

Hors ligne

#3 Le 11/01/2011, à 12:44

tuxidermiste

Re : Script de décompression et recherche

Ah bah c'est plus facile que je ne le pensais alors ^^

Et pour décompresser à la volée le contenu de tous les fichiers .gz vers un dossier mes_logs par exemple il y a une commande magique? smile


Sony VAIO VPCEB2M1E + Kubuntu 11.10

Hors ligne

#4 Le 11/01/2011, à 14:26

biotechman

Re : Script de décompression et recherche

ça fonctionne comme tu veux ?

#!/bin/bash
find /path/to/log/ -iname "*.log.gz" -exec cp {} /path/to/file/ \;
cd /path/to/file/
gunzip *.log.gz
egrep .RICE\|RICE. *

On doit pouvoir faire plus court

Dernière modification par biotechman (Le 11/01/2011, à 14:27)


May the source be with you
http://biotechman.com/wordpress

Hors ligne

#5 Le 11/01/2011, à 16:35

redo_fr

Re : Script de décompression et recherche

Salut, si tu veux décompresser tes logs "juste" pour chercher, c'est inutile smile

for fic in `ls *.log.gz`; do echo "--- $fic ---" ;  zgrep "RICE" $fic ; done

Dernière modification par redo_fr (Le 11/01/2011, à 16:38)


Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -

Hors ligne

#6 Le 11/01/2011, à 16:52

biotechman

Re : Script de décompression et recherche

@ redo_fr:
apparemment, d'après ce qu'il disait, il veut les décompresser absolument.
Par contre, il demandait à ce que le grep ne retourne que le pattern RICE avec un caractère avant et/ou après, c'est pourquoi j'ai utilisé egrep.
De un, je ne connaissais pas zgrep qui est monstrueusement bon [je vais avoir des lignes de scripts perso à modifier ;-) ].
De deux, est-il possible de répondre à sa demande concernant les caractères précédant ou suivant avec zgrep ??

Dernière modification par biotechman (Le 11/01/2011, à 16:52)


May the source be with you
http://biotechman.com/wordpress

Hors ligne

#7 Le 11/01/2011, à 17:43

redo_fr

Re : Script de décompression et recherche

cd /repertoire/destination ; for fic in `find /repertoire/source -iname "*.log.gz"` ; do mv ${fic} . ; gunzip `echo ${fic} | awk -F/  '{print $NF}'` ; done

grep -H 'RICE' *.log

Pour ce qui est de la recherche, sa demande est

chercher parmis tous ces fichiers .log les lignes contenant le mot RICE précédé ou suivi d'autres lettres/espaces/...

donc toute la ligne...


Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -

Hors ligne

#8 Le 11/01/2011, à 17:48

tuxidermiste

Re : Script de décompression et recherche

En effet il ne me faut pas spécialement décompresser les logs, je pensais que c'était une étape obligatoire smile Le truc principal qu'il me faut c'est le nom du fichier qui contient cette chaîne de caractères.

Je ne m'attendais pas à autant d'aide (vu que je n'avais même pas une ébauche de script parfois les gens n'aiment pas faire le job pour les autres :s) c'est vraiment sympa de votre part, et grâce à vous et linux j'évite d'ouvrir 1500 fichiers en faisant pour chacun un CTRL+F tongue

Je teste tout ça ce soir une fois que j'aurais fini de téléchargé tous les fichiers logs (il y en a un paquet et heureusement j'ai trouvé un script pour le faire à ma place ^^ que c'est pratique ces scripts bash quand même !).

Dernière modification par tuxidermiste (Le 11/01/2011, à 17:49)


Sony VAIO VPCEB2M1E + Kubuntu 11.10

Hors ligne

#9 Le 11/01/2011, à 18:52

biotechman

Re : Script de décompression et recherche

@redo_fr:
ton grep va retourner un résultat positif même si le seul mot de la ligne est RICE.
Avec une expression régulière on peut supprimer ces lignes du résultat et ne garder que celles qui sont précédées ou suivies par une lettre/espace et autres, chose demandée initialement.
Désolé de jouer sur la nuance, mais elle peut avoir son importance dans certains cas.

Dernière modification par biotechman (Le 11/01/2011, à 18:55)


May the source be with you
http://biotechman.com/wordpress

Hors ligne

#10 Le 11/01/2011, à 22:12

ehmicky

Re : Script de décompression et recherche

redo_fr a écrit :
`echo ${fic} | awk -F/  '{print $NF}'`

Tu peux faire simplement (même résultat) :

"${fich##*/}"

ou utiliser basename.

Sinon, pour le topic, simplement :

find /path/to/log -iname "*.log.gz" -exec tar -Oxf {} \; | grep ".RICE."

Ou si tu veux absolument décompresser :

find /path/to/log -iname "*.log.gz" -exec tar -xf {} -C /path/to/dest \;
grep -r ".RICE." /path/to/dest

Dernière modification par ehmicky (Le 11/01/2011, à 22:41)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 14/01/2011, à 03:55

ehmicky

Re : Script de décompression et recherche

Autre solution :

find /path/to/log -iname "*.log.gz" -exec tar -xf {} --to-command="grep .RICE." \;

Dernière modification par ehmicky (Le 14/01/2011, à 03:56)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne