#!/bin/bash
# extrahiert suchbegriffe aus apache logfile
logfile="$1"
filetype=$( file -b "$logfile" | awk -F, '{print $1}' )
ok_grep=$( which grep >/dev/null 2>&1; echo $? )
ok_zgrep=$( which zgrep >/dev/null 2>&1; echo $? )
ok_bzgrep=$( which bzgrep >/dev/null 2>&1; echo $? )
if [ -r "$logfile" ]
then
if [ "$filetype" == "ASCII text" -a $ok_grep -eq 0 ]
then
pre="grep"
elif [ "$filetype" == "gzip compressed data" -a $ok_zgrep -eq 0 ]
then
pre="zgrep"
elif [ "$filetype" == "bzip2 compressed data" -a $ok_bzgrep -eq 0 ]
then
pre="bzgrep"
else
echo "cannot open filetype \"$filetype\""
exit 1
fi
else
echo "$logfile not readable by user $( whoami ) or not found"
exit 1
fi
$pre 'q=' $logfile | awk -F'"' '{print $2,$4}' | awk '{print $2,$4}' |
sed 's/http:.*[?&_]q=/ /' | grep -v ' cache:' | awk -F'&' '{print $1}' | sort |
echo -e "$(sed 's/+/ /g; s/%/\\x/g')\n"
exit 0
Speichert das Skript (z.B. als suchbegriffe.sh) und macht es ausführbar (getestet auf Debian).
Aufgerufen wird es in der Form:
./suchbegriffe.sh /pfad/zur/logdatei[.gz]
Ob das Logfile noch ASCII Text, also unkomprimiert ist, oder bereits gzip oder bzip2 komprimiert, erkennt das Skript selbst.
Die Ausgabe ist dann jeweils "Zielseite Suchbegriffe", ein Eintrag pro Zeile.
Sollte das Ergebnis überhaupt nicht euren Vorstellungen entsprechen, solltet ihr vielleicht mal auf
suchmaschinenoptimierung.michaelsattler.de/ nachlesen, wie ihr nachbessern könnt. Das Tutorial ist umfassend und kompetent geschrieben.