grep is klasse

with tags PC Quählkot Technik -


Ich behalt ja gerne den Überblick darüber was auf meinem Server so los ist und da leider meine Django-Statistik-Middleware noch nichtmal annähernd fertig ist (gerade erstmal nur die Idee formuliert und ausprobiert ob das überhaupt möglich ist), musste ich etwas improvisieren.

Die erste Idee war einfach ein watch auf das log zu starten:

watch tail -n20 /var/log/nginx/access_log

aber das war mir dann doch zu unübersichtlich und vor allem viel zu stark von Bots zugemüllt.

Also erstmal die ersten paar, wirklich schlimmsten bots mit jeder menge greps und pipes aussortiert und ein paar pipes für IPs eingefügt die mich auch nicht interessieren (192.168...)
Doch natürlich ist das alles.. nur keine brauchbare Lösung (wer will schon permanent pipes hinten dran schreiben?) und die vielen greps die alle 1-2min gestartet werden, nur um sich gleich wieder zu beenden, sind irgendwie auch nicht das was ich meinem System nur so aus Spaß 24/7 antun wollte.

Nach einigen Optimierungen sieht das Script also jetzt folgendermaßen aus:


#!/bin/bash
while true;
do
{
clear;
echo -n 'Bot-Zeilen: ';
grep -c -F -f ./watch_patterns /var/log/nginx/access_log;
echo -n 'vermutlich browsergenerierte Zeilen: ';
grep -c -v -F -f ./watch_patterns /var/log/nginx/access_log;
grep -v -F -f ./watch_patterns /var/log/nginx/access_log \
| tail -n40;
sleep 60;
}
done;

Zusätzlich gibts dann einfach noch in watch_patterns einen Haufen Zeilen mit Texten die in Useragents vorkommen:


192.168.
FriendFeedBot
Feedfetcher-Google
WordPress
PostRank
FeedBurner
WikioFeedBot
Baiduspider
Slurp
Googlebot/2.1
...

...und schon läuft die Sache!

Manchmal ist es schon schön was man alles schnell mit diesen mini-Scripten zusammenwerfen kann. Man sollte halt nur drauf achten dass man nicht anfängt die für ernsthafte Probleme zu verwenden.

Importierte/Alte Kommentare:

#1397: 18.Jun.2010 04:06 von Dr. Azrael Tod

BTW: das war der 400. Artikel auf G33KY (und alle sind noch da, auch wenn ich 2x die Platform gewechselt hab \o/)

Geschrieben von Dr. Azrael Tod