filter un fichier de log en fonction du reférant... [shell] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 30-12-2003 à 16:57:40
bon ben j'ai trouvé
pour ceux que ça interessent :
Code :
|
et je fais le test sur l'ip ET le user agent, donc risque d'erreur minime.
Marsh Posté le 31-12-2003 à 11:53:45
et pour ceux que ça interessent vraiment, j'ai fait une nouvelle version (il faut dire que celle-ci était mon premier awk) qui est 45 fois plus rapide
Marsh Posté le 30-12-2003 à 14:53:04
Attention les yeux "la buse" is back, et je suis de plus en plus fou
Ce que je veux faire est simple à priori :
Filtrer un ficher de log pour n'inclure que l'activité des internautes venant d'un certain site (google par exemple).
La première chose à laquelle on pense c'est un simple grep :
Mais c'est pas bon car après le premier hit, le référent n'est plus "http://www.google..." mais une page de mon site. Le grep ne renvoi donc que le premier hit
J'ai donc penser à faire ceci :
- récupérer les adresses IP des gens venant de google comme ceci :
awk '$11 ~/http:\/\/www.google/ {print $1}' access.log | sort | uniq
ce qui me donne une liste d'adresse IP, et ensuite faire un grep sur chaque adresse IP de la liste sur le fichier de log et recomposer un fichier (que je "sort" par date ensuite).
Mais cette partie là ne me plait pô, c'est pô bô.
Je suppose que tout cela est faisable avec awk, mais étant une buse, je ne vois pas comment...
help please...
EDIT :
Je suis bien sûr conscient qu'une solution basée sur l'adresse IP seule implique une certaine marge d'erreur.
Une fois que cette solution fonctionnera j'essaierais de l'améliorer pour utiliser le couple adresse IP + User Agent.
Message édité par duch le 30-12-2003 à 15:31:32