Clarifier fichiers de log

[Résolu/Fermé]
Signaler
Messages postés
307
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
17 février 2011
-
Messages postés
307
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
17 février 2011
-
Bonjour,

Je voudrais clarifier un peu un fichier de log . Je voudrais pouvoir supprimer la fin de la ligne à partir d'un caractère donné, ou à partir d'un certains nombre de caractère.

J'ai cherché sur le net, mais j'ai rien trouvé qui explique ce que je veux faire.
Je pense qu'il faut que j'utilise SED, que je redirige le résultat dans un fichier à moi si je veux garder ça.

Par exemple j'ai cette ligne là :

192.168.1.1 - - [28/Jun/2010:13:17:14 +0200] "GET /index.php?page=image HTTP/1.1" 200 1185 "http://sitetest/index.php?page=ftp2" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4"

Je voudrais pouvoir supprimer ce qui concerne le navigateur et l'ordinateur, garder que l'ip du visiteur, et les pages qu'il visite.

Merci de l'aide que vous pourriez m'apporter.



3 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
Salut,

Essaye ça :

egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3} |http://[^"]*' 

Qui devrait te renvoyer ça sur l'exemple que tu as donné...

192.168.1.1
http://sitetest/index.php?page=ftp2

;-))
Messages postés
307
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
17 février 2011
55
ça marche, mais pas tout à fait comme je voudrais, la commande renvoie aussi les chiffres qui sont dans cette partie de la ligne: " (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4" "

le 1.9.2.4 là en l'occurence.
y'aurait pas moyen de genre supprimer toute la fin de la ligne, à partir du "GET/" par exemple, commun à toutes les lignes? et ensuite repasser dessus pour ne garder que l'IP. Pour garder les pages je peux faire un premier passage en gardant que ça.

Merci de votre aide.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
T'as bien copié la syntaxe que je t'ai donnée (notamment l'espace après le "3}" et avant le pipe "|" qui est là justement pour éviter de prendre le numéro de révision ;-\)

jp@MDK:~/tmpfs ssh$ cat plop
192.168.1.1 - - [28/Jun/2010:13:17:14 +0200] "GET /index.php?page=image HTTP/1.1" 200 1185 "http://sitetest/index.php?page=ftp2" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; fr; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4"

# Avec espace
jp@MDK:~/tmpfs ssh$ egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3} |http://[^"]*' plop
192.168.1.1
http://sitetest/index.php?page=ftp2

# Sans espace
jp@MDK:~/tmpfs ssh$ egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}|http://[^"]*' plop
192.168.1.1
http://sitetest/index.php?page=ftp2
1.9.2.4

jp@MDK:~/tmpfs ssh$
Messages postés
307
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
17 février 2011
55
Merci bien, et en fait j'ai fait plus simple...

awk '{print $1}' /var/log/apache2/access.log.1 > testgrep/test.txt
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
Oui mais ça ne répond pas à la demande initiale :-(((

Je voudrais pouvoir supprimer ce qui concerne le navigateur et l'ordinateur, garder que l'ip du visiteur, et les pages qu'il visite.
Messages postés
307
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
17 février 2011
55
bah après il faut chercher les autre variables et faire un print de celles ci, et c'est ok.