Batchkurs, Teil 4: Immer schön sauber bleiben mit Filtern
In diesem Teil des Batchkurses wollen wir lernen, wie die Ausgaben von Kommandozeilenbefehle weiter verarbeitet werden können.
Der Befehl
echo Hallogibt das Wort “Hallo” auf dem Bildschirm aus. Diese Ausgabe kann man umleiten, wie wir bereits beim Thema Umleitungen kennengelernt haben. Allerdings kann man die Ausgabe eines Befehls auch an einen sogenannten Filter übergeben. Filter sind kleine Programme, die die Ausgabe weiterverarbeiten. Um die Ausgabe zu übergeben, wird der ausgebende Befehl vom Filter durch ein Pipe-Symbol (ALTGr+<) getrennt.
Beispiele für Filter sind die Befehle
more
find
sort
So erzeugt etwa der Befehl
dir c:\ | find "Dokumente"
eine Ausgabe aller Zeilen, in denen das Wort “Dokumente” vorkommt (bei deutschen Windows XP-Versionen ist dies in der Regel der Pfad C:\dokumente und einstellungen).
Die Ausgabe des Filters lässt sich nun wiederum umleiten in eine Textdatei:
dir c:\ | find "Dokumente" >c:\dokumente.txt
Nach Ausführung des Befehls legt das System eine Datei dokumente.txt auf C:\ an (bzw. überschreibt diese, wenn sie bereits dort vorhanden war) und notiert in dieser Textdatei alle Vorkommen von “Dokumente” in der Ausgabe des Befehls “dir c:\”.
Was kann man damit nun in der Praxis anfangen?
Große Logdateien, z. B. von Webserver, manuell nach bestimmten Einträgen zu durchsuchen, kann sehr zeitaufwändig sein. Wird ihr Webserver beispielsweise von einer bestimmten IP-Adresse angegriffen (z. B. ein Botnetz) und wollen sie Details dieses Angriffs analysieren, hilft ein Befehl wie
type access.log | find "127.0.0.1" >c:\angriffe.txt
um die einzelnen Einträge des Angreifers von dem anderen Webtraffic zu trennen (für die IP 127.0.0.1 müssen sie natürlich die IP-Adresse des Angreifers einsetzen, um ein vernünftiges Ergebnis zu erhalten).
Hilfe zu den Filtern MORE und FIND erhalten sie über den Kommandozeilenbefehl
help more
help find
help sort