Referer filtern
Da ich mich immer weiter mit Linux anfreunde, bleibt natürlich auch das Thema Shell Scripting nicht unberührt. Daher gibt es mit diesem Post eine neue Kategorie, die Kategorie Scripts, in der alle Scripts, die ich täglich benutze, veröffentlicht werden.
Der Grund? Ich bin Anfänger und da hat man eben nunmal schon desöfteren ein Brett vor’m Kopf und müht sich überaus umständlich mit einer Sache ab, die auch sehr viel einfacher geht. Und Probieren geht über Studieren, zumindest habe ich keine Lust mir vor der Benutzung eines Tools erst irgendwelche Riesendokumente durchzulesen. Es ist daher möglich, dass sich sehr viele teils schlimme Dinge in den Scripts finden werden. Wenn ich mir meine ersten HTML-Seiten so anschaue, weiß ich wie schlecht das sein kann. Ich lade daher jeden recht herzlich ein Fehler und Verbesserungsvorschläge (vor allem Sicherheitsbedenken gehören dazu) per Mail oder in die Kommentare zu posten.
Aber nun zum eigentlichen Thema: Auf Warzone2100.de werden HTTP-Anfragen geloggt – ja, ich bin ein gaaanz böser Speicherer und mache das schon jahrelang. Ein typischer Eintrag sieht dann in etwa so aus:
XXX.XXX.XXX.XXX – – [05/Oct/2008:00:29:55 +0200] “GET / HTTP/1.1” 302 – “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3”
Was interessiert mich an diesen Daten? Das “-“, denn es handelt sich dabei um einen leeren Referer. Weiterhin interessiert es mich nicht, ob der Besucher von warzone2100.de, über die Yahoo- oder Google-Suche gekommen ist oder gar einem Link auf Wikipedia folgt. Am allerwenigsten interessiert mich, ob er keinen Referer hat oder die Seite direkt ansteuert. Daher besteht die zweite Aufgabe darin genau jene Zeilen zu leeren und anschließend alle Leerzeilen zu entfernen. Ich brauche dazu zwei Scripts, obwohl auch eines ausreichen würde, wollte mich aber gestern Abend nicht in die Untiefen von sed stürzen und habe es in dieser Form belassen.
Referers filtern
Hilfsdatei für wz_logs_get_referers.sh
Kommentare zu diesem Post abgeben (benötigt Boardaccount)