Es gibt genügend Weblog Dateien, die einem ungefilterte Informationen zu bestimmten Dingen geben. Eine davon ist die von meiner emslandmap auf unser-schoenes-emsland. Auch wenn ich die Logs in diesem Fall selber schreiben lasse, so ist die Masse nicht immer zielführend für Auswertungen und ein simples durchforsten ist meist aufwendig. Zum Glück gibt es Möglichkeiten die Logs mit einer Shell zielgenauer zu filtern. Dies hab ich mit dem Skript aus diesem Beitrag gemacht.
Am Anfang stehen ein paar Variablen, die vorher gesetzt werden. Das Skript sucht nach Zeilen mit dem Schlagwort “REMOTE IP”. Wie solch eine Zeile aussieht seht ihr hier:
2024-01-18T19:51:55+01:00 [INFO] : [get.php][0c0a67801091f35ceb028810110daf3a44ddaebc]REMOTE IP: 8.8.8.8
Neben der IP lasse ich noch ebenfalls das Datum + Uhrzeit rausziehen. Das passiert mit cut -s -d: -f1-3,6. Der Delimiter wurde auf “:” geändert. Ausgegeben werden die ersten 3 Felder für das Datum + Uhrzeit, sowie die 6 für die IP. Mittels uniq -s 34 werden gleiche IP Adressen zusammengezählt. Diese Info geht in die .CSV Datei.
Als nächstes ermittle ich die Anzahl der eindeutigen IP Adressen und schreibe es in die Variabel uniqip. Wir nehmen Teile des ersten Befehls mit dem Unterschied, dass die IPs sortiert und mit wc -l gezählt sind. Auch diese Info kommt in die .CSV Datei.
Die jetzt vollständige Datei geht mit einer Mail an die angegebene Adresse. Zum Schluss noch ein paar Aufräumarbeiten, in der wir die .CSV Datei löschen und die Weblog umbenennen.
#!/bin/bash logfile=/pfad/name.log archivfile=/pfad/name_$(date +"%d_%m_%Y").log textfile=emslandmap_$(date +"%d_%m_%Y").csv receiver=receiver@tld.de sender=sender@tld.de grep "REMOTE IP" ${logfile} | cut -s -d: -f1-3,6 | uniq -s 34 >> ${textfile} uniqip=$( grep "REMOTE IP" ${logfile} | cut -s -d: -f6| sort -n | uniq | wc -l ) echo "Einzigartige IP-Adressen: ${uniqip}" >> ${textfile} echo "Auswertung " | mail -r ${sender} -s "Betreff Webaufrufe" -a ${textfile} ${receiver} rm -f ${textfile} mv ${logfile} ${archivfile} exit 0
Das Skript speichern wir ab und legen es in einem Verzeichnis, um es per Cronjob automatisch ausführen zu lassen.