Im Laufe der Zeit meiner Beschäftigung mit Computern haben sich unzählige kleine und größere Skripte, Ideen, Erkenntnisse und Erfahrungen zu allen möglichen Aufgaben in der täglichen Arbeit mit Computersystemen und -netzen angesammelt. Auf dieser Seite will ich in der kommenden Zeit einige dieser nützlichen Gedanken und Methoden zusammentragen. Vermutlich wird Diese Seite daher eine der am häufigsten ergänzten Seiten meiner Website werden.
Vorläufig gibt es hier drei Dinge aus der jüngsten Vergangenheit:
Nachdem Ich vor kurzem (Anfang Juni 2007) mit regelmäßigen Verbindungsabbrüchen meiner DSL-Leitung zu kämpfen hatte, stellte sich die Frage nach dem Warum. Ein Ansatz ist, die DSL (oder genauer die PPPoE) Statuspakete anzusehen. Der folgende tcpdump Filterausdruck filtert diese heraus:
Der erste Term ether[12:2] & 0x8868 == 0x8860 filtert alles aus was nicht mit PPPoE zu tun hat. Der zweite Term ether[20:2] != 0x0021 filtert alle PPPoE Pakete aus, die IP Nutzdaten transportieren. Der dritte Term ether[22:1] & 0xfc != 0x08 schließlich eliminiert die PPPoE Echo-Pakete, welche der Überprüfung, ob die Gegenstelle noch "lebt", dienen. Dieser dritte Term ist nicht 100% genau, er filtert außer dem Pakettypen 0x09 und 0x0a auch noch den Typ 0x0b aus.
Eine Schwierigkeit hierbei war, dass die von tcpdump -vv ausgegebenen Paketlängen nicht ganz zu den Offsets in den entsprechenden C-Headerdateien passten.
Manchmal sitzt man vor einem langen Weblog oder anderen Protokolldateien und hat ein paar dringende Fragen an die Daten, aber leider kein passendes "richtiges" Analysewerkzeug zur Hand. Glücklicherweise bringen Unix-Systeme wie Linux, *BSD und andere alles mit, was man für eine Ad-hoc Lösung braucht. Der folgende Einzeiler liest ein Apache Zugriffslog und ersetzt dabei die IP-Adressen im Log durch die zugehörigen Hostnamen.
Das besondere an diesem Einzeiler ist, das er mit einem Cache für die IP-auf-Hostnamen Umsetzung arbeitet, was zum einen freundlicher zum nächstgelegenen Nameserver ist, und zum anderen die Abarbeitung erheblich beschleunigt - insbesondere bei wiederholter Ausführung!
Der besseren Lesbarkeit wegen dasselbe nochmal etwas platzgreifender formatiert:
Im konkreten Fall interessierte mich welche Hosts an jedem Tag auf die betreffende (niedrig-freuentierte) Site zugegriffen hatten. Daher fand sich an der Stelle "<$ACCESSLOG | (" statt dessen "<$ACCESSLOG | cut -d : -f 1 | uniq | (" was im normalen Apache Zugriffslog genau hinter der Tagesnummer eines jeden Eintrags abschneidet.
Für eine andere Website als diese hier suchte ich kürzlich (Ende Juni 2007) eine möglichst simple, einfach zu installierende PHP-basierte Bildergalerie. MiG-1.5.0 schien das Programm der Wahl, stellt es doch eine Im Dateisystem angelegte Ordnerhierarchie 1:1 als Galerie dar, ergänzt um Vorschaubilder und eine übersichtliche Navigation. Einziges Problem: Verzeichnisse mit Umlauten im Namen führen zu einem "404 - Nicht gefunden". Der folgende Patch behebt das Problem:
Zwar kein Bug, aber mich trotzdem störend, ist die schlechte Unterscheidbarkeit von Unterverzeichnissen von reinen Bilder, wenn Unterverzeichnisse durch ein (zufällig gewähltes) Vorschaubild eines der in ihnen enthaltenen Bilder dargestellt werden. Um dieses zu ändern, habe ich MiG so angepasst, dass zusätzlich zum Vorschaubild auch ein Ordnersymbol angezeigt wird: