#!/bin/sh

# webaccess - Analyse un fichier access_log au format Apache et en
#   extrait des statistiques utiles et intressantes 

bytes_in_gb=1048576
# Vous devrez peut-tre adapter les deux lignes suivantes pour les faire
# pointer vers ces scripts sur votre systme (ou vous assurer qu'elles
# se trouvent dans votre PATH)
scriptbc="$HOME/bin/scriptbc"      # script #9
nicenumber="$HOME/bin/nicenumber"  # script #4
# Vous adapterez aussi la ligne suivante  votre nom d'hte. Cela
# vite de tenir compte des rponses pertinentes internes dans l'analyse
# des rfrants.
host="intuitive.com"

if [ $# -eq 0 -o ! -f "$1" ] ; then
  echo "Syntaxe: $(basename $0) fichier_journal" >&2
  exit 1
fi

firstdate="$(head -1 "$1" | awk '{print $4}' | sed 's/\[//')"
lastdate="$(tail -1 "$1" | awk '{print $4}' | sed 's/\[//')"

echo "Rsultats de l'analyse du fichier journal $1"
echo ""
echo " Date de dbut: $(echo $firstdate|sed 's/:/  /')"
echo "   Date de fin: $(echo $lastdate|sed 's/:/  /')"

hits="$(wc -l < "$1" | sed 's/[^[:digit:]]//g')"

echo "Rponses pertinentes: $($nicenumber $hits) (accs totaux)"

pages="$(grep -ivE '(.txt|.gif|.jpg|.png)' "$1" | wc -l | sed 's/[^[:digit:]]//g')"

echo "    Pages vues: $($nicenumber $pages) (rponses pertinentes moins les images et le texte brut)"

totalbytes="$(awk '{sum+=$10} END {print sum}' "$1")"

echo -n "     Transfr: $($nicenumber $totalbytes) octets "

if [ $totalbytes -gt $bytes_in_gb ] ; then
  echo "($($scriptbc $totalbytes / $bytes_in_gb) Go)"
elif [ $totalbytes -gt 1024 ] ; then
  echo "($($scriptbc $totalbytes / 1024) Mo)"
else
  echo ""
fi

# Cherchons maintenant des donnes utiles dans le fichier journal: 

echo ""
echo "Les dix pages les plus populaires sont:"

awk '{print $7}' "$1" | grep -ivE '(.gif|.jpg|.png)' | \
  sed 's/\/$//g' | sort | \
  uniq -c | sort -rn | head -10

echo ""

echo "Les dix rfrants les plus frquents sont:"

awk '{print $11}' "$1" | \
  grep -vE "(^"-"$|/www.$host|/$host)" | \
  sort | uniq -c | sort -rn | head -10

echo ""
exit 0
