Aus LinuxUser 07/2012

Suche in Datenformaten (Teil 2) (Seite 2)

Ngrep kombiniert die Stärken von Grep mit einem Werkzeug zur Fehlersuche im Netzwerk und dem Paketscannen. Alternativen zu Ngrep finden Sie zum Beispiel in Tcpdump [13], Wireshark [14] und dessen Kommandozeilenversion Tshark sowie dem Nmap-Frontend Zenmap [15].

Während Tcpdump und Tshark ebenfalls für die Kommandozeile gedacht sind, benötigen Wireshark und Zenmap das X-Window-System. Alle Werkzeuge inklusive Ngrep haben einen großen Funktionsumfang und gehören zum Standardwerkzeugkasten eines Administrators.

E-Mails

Grep eignet sich zwar gut zum zeilenweisen Durchforsten von Dateien, aber bei im gängigen Mbox-Format vorliegenden E-Mail-Ordnern versagt es kläglich: Es findet zwar Treffer, gibt aber nicht aus, in welcher E-Mail, sondern höchstens in welchen Ordnern.

Dieses Problem lösen sowohl das in C geschriebene Mboxgrep [16] wie das in Perl geschriebene Grepmail [17]. Beide suchen in einem E-Mail-Ordner nach Nachrichten, die das Suchmuster enthalten, und geben dann die gesamte E-Mail, in der das Suchmuster vorkommt, zurück. Das hat den Vorteil, dass sich die Ausgabe der beiden Programme wieder als Eingabe für eine weitere Instanz eignet.

Das Beispiel in Listing 3 sucht zunächst alle E-Mails heraus, in denen die Zeichenkette tmpreaper vorkommt, und filtert im zweiten Schritt diejenigen heraus, die zusätzlich die Zeichenkette localhost enthalten.

Listing 3

# mboxgrep tmpreaper /var/mail/root | mboxgrep localhost

Das Programm verfügt über die von Grep her vertrauten Optionen -i für eine Suche unabhängig von Groß- und Kleinschreibung sowie -v für die inverse Suche, also die Suche nach allen E-Mails, die das Muster nicht enthalten.

Da Grepmail in Perl geschrieben ist, nutzt es dessen reguläre Ausdrücke zur Suche – und nur diese. Mboxgrep dagegen bietet fast alle Suchmuster-Formate an, die Sie von Grep her kennen: Einfache reguläre Ausdrücke (Option -G), reguläre Ausdrücke nach Posix (Option -E, Vorgabe) und Perl-kompatible reguläre Ausdrücke (PCRE, Option -P). Nur die Suche nach der exakt angegebenen Zeichenkette fehlt.

Beide Programme unterstützen das Mbox-Format – sowohl als unkomprimierte Textdateien als auch in mit Gzip und Bzip2 komprimierter Form. Bei diesem Format liegen alle E-Mails in einer Datei. Mboxgrep unterstützt zusätzlich die verzeichnisbasierten Mail-Ordner-Formate MH, NNMH, NNML und Maildir. Im Notfall ließe sich darin allerdings auch etwas mit dem normalen Grep erreichen.

Beide Tools zählen auf Wunsch die Anzahl der E-Mails, allerdings mit unterschiedlichen Optionen und leicht unterschiedlichen Ausgaben. Auch in diesem Fall arbeitet Mboxgrep näher am originalen Grep: Dessen Option -c (wie bei Grep als Langoption --count) gibt den Ordnernamen nur dann mit aus, wenn Sie mehr als einen E-Mail-Ordner auf der Kommandozeile zum Durchsuchen angegeben haben. Die Option -r („report“) von Grepmail gibt stets den Ordnernamen mit aus.

Möchten Sie entweder nur in den Kopfzeilen oder nur im Inhalt der E-Mail suchen, unterscheiden sich die beiden Tools leicht: Während sich bei Mboxgrep die beiden Optionen -H und -B auf Kopfzeilen („header“) und Inhalt („body“) beziehen, sind es bei Grepmail die Optionen -h und -b.

Im Gegensatz dazu veranlassen die Optionen -H und -B Grepmail dazu, nur Kopfzeilen oder nur den Inhalt (plus eine minimale Anzahl an Kopfzeilen) auszugeben. Mehrfach vorkommende, identische E-Mails unterdrücken Sie bei Grepmail mit der Option -u („unique“), bei Mboxgrep durch die Option -nd bzw. --no-duplicates (Langform).

Grepmail verfügt zusätzlich über die Möglichkeit, die Namen des E-Mail-Ordners, in dem es die Nachricht gefunden hat, als Kopfzeile X-Mailfolder in die ausgegebenen E-Mails einzubauen, Zeilennummern anzugeben, nur Nachrichten bestimmter Größe herauszusuchen, Signaturen bei der Suche zu ignorieren oder nur in bestimmten Kopfzeilen zu suchen. Dafür glänzt Mboxgrep mit der (nicht ganz ungefährlichen) Möglichkeit, alle E-Mails, die das Suchmuster enthalten, direkt aus dem angegebenen E-Mail-Ordner zu löschen.

Mit Gtkgrepmail existiert ein grafisches Frontend für Grepmail [18]. Es basiert jedoch immer noch auf den Bibliotheken von Gnome 1.x, die in nahezu keiner Linux-Distribution mehr bereit stehen. Vermutlich deshalb gibt es auch in kaum einer Distribution ein passendes Paket. Die Debian-Entwickler entfernten Gtkgrepmail bereits 2008 aus dem genannten Grund [19].

Kurz gesagt: Mboxgrep und Grepmail schenken sich nicht viel. Mboxgrep gleicht vom Bedienkonzept stärker dem originalen Grep, versteht sich auf verzeichnisbasierte Ordnerformate und arbeitet aufgrund der Implementation in C schneller. Dafür dürfen Sie bei Grepmail genauer spezifizieren, wonach sie suchen und welche Bestandteile der E-Mails auf der Ausgabe erscheinen sollen. Die nachfolgenden Beispiele demonstrieren die Mächtigkeit der beiden Werkzeuge.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 07/2012 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: