[Bash] Lire le fichier de log apache access

Il n'y a rien de plus contraignant que d'aller fouiller dans les logs apache, heureusement la commande awk est là pour nous aider !

Remplacez :

  • [fichier_apache] par le chemin de votre fichier de log apache.
  • [ip] par l'IP que vous souhaitez contrôler.

Par exemple si l'on souhaite faire ressortir la liste des codes HTTP :
awk '{print $9}' [fichier_apache] | sort | uniq -c | sort -nr

Puis affiner les résultats sur les codes 404 :
grep " 404 " [fichier_apache] | awk '{print $7}' | sort | uniq -c | sort -nr

On peut limiter les résultats au 20 premiers si nécéssaire :
grep " 404 " [fichier_apache] | awk '{print $7}' | sort | uniq -c | sort -nr | head -n20

Rechercher une IP suspecte :
awk '{print $1}' [fichier_apache] | sort | uniq -c | sort -nr | head -n20

Contrôler les pages consultées par une IP suspecte :
grep "^[ip] " [fichier_apache] | awk '{print $7}' | sort | uniq -c | sort -nr | head

Affiner sur les heures :
grep "^[ip] " [fichier_apache] | awk '{gsub(/:[0-9]+:[0-9]+$/,"",$4);print $4,$7}' | sort | uniq -c | sort -nr | head

Vous l'aurez compris les possibilités son grandes ... pour aller plus loin, il suffit d'utiliser les combinaisons des commandes :

  • grep pour faire une recherche dans le fichier
  • awk pour faire un explode du fichier (par défaut awk utilise l’espace comme séparateur, si vous avez un fichier CSV avec des séparateur ; il faut lui spécifier awk -F";")
  • gsub pour modifier une valeur à la volé
  • sort, uniq et head pour trier, dédoublonner et limiter l'affichage des résultats

© Johnstyle 2017 • All rights reserved.