Home / LinuxUser / 2012 / 07 / Suche in Datenformaten (Teil 2)

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

AA_comb_abcdz2000_sxc_1130208.jpg

© Abcdz2000, sxc.hu

Durchgekämmt

Suche in Datenformaten (Teil 2)

26.06.2012 Wer Grep kennt, der findet Alles. Wer obendrein die Spezialvarianten beherrscht, findet das Gesuchte auch an sonst unzugänglichen Orten.

Grep besticht mit dem Prinzip, Textdateien und Datenströme schnell nach Mustern zu durchsuchen. Daher gibt es ein Vielzahl von Varianten, deren Fokus auf Datei- oder Textformaten liegt, die das Original nicht so leicht verdaut. Die Suche nach Mustern in Prozesslisten oder systemrelevanten Dateien verläuft oft nach dem gleichen Prinzip, ebenso wie jene in speziellen Formaten wie E-Mail-Ordnern oder sogar Versionskontrollsystemen.

TIPP

Ein erster Teil des Workshops hat sich bereits mit speziellen Anwendungsformaten beschäftigt [1]. Er ergänzt diesen Workshop, Sie können beide Beiträge aber unabhängig voneinander lesen.

Prozessliste

Zu den Aufgaben eines Administrators gehört es, die ihm anvertrauten Rechner bestmöglich zu betreuen. Das beinhaltet das Beobachten der Systemlast und der laufenden Prozesse. Für Einzelplatzsysteme genügen meist die Werkzeuge Ps, Pstree, Pidof, Pgrep [2] und Htop [3]. Beim permanenten Monitoring ganzer Rechnerverbünde (etwa im Rechenzentrum) dagegen spielen häufig die webbasierten Werkzeuge Munin [4], Nagios [5], Cacti [6] und Icinga [7] ihre Stärken aus.

Trotz aller Aufmerksamkeit kommt es immer wieder vor, dass ein Programm oder Prozess versucht, die CPU vollständig für sich zu vereinnahmen, und damit andere Prozesse blockiert. Um solche Störenfriede zu bändigen, benötigen Sie die entsprechende Nummer des Prozesses (Prozess-ID). Hier hilft Pgrep weiter: Es durchsucht die Liste der Prozesse anhand eines Musters und liefert die entsprechenden IDs zurück. Dabei haben Sie die Möglichkeit, das Muster als regulären Ausdruck [8] zu formulieren.

Der Ursprung von Pgrep geht auf Solaris 7 zurück, inzwischen gibt es das Tool auch für Linux und OpenBSD [9]. Unter Debian/Ubuntu gehört es zum Paket Procps [10]. Das Programm entspricht in der Grundfunktionalität der folgenden Kombination aus Kommandos:

$ ps ax | grep Prozessname | grep -v grep | awk '{print $1}'

Im einfachsten Fall übergeben Sie Pgrep beim Aufruf als Parameter den Namen des Programms, nach dem Sie die Liste durchsuchen möchten. Als Rückgabe erhalten Sie die IDs aller Einträge, auf die das Muster passt. Die Option -l ergänzt die Ausgabe um den Programmnamen (Listing 1).

Listing 1

$ pgrep ssh
1746
5660
6004
$ pgrep -l ssh
1746 sshd
5660 ssh-agent
6004 ssh

Pgrep bietet die Möglichkeit, die Ausgabe nach den jeweiligen Nutzern zu filtern. Mit der Option -u thomas legen Sie fest, dass das Tool nur die Prozesse ausgibt, die dem Benutzer thomas gehören. Mehrere Benutzernamen trennen Sie durch Kommata (-u thomas,helmut). Damit sehen Sie die Prozesse, die entweder dem Benutzer thomas oder helmut gehören. Listing 2 zeigt die Informationen zum Netzwerkmonitor Wicd [11], dessen Prozesse dem Benutzer root gehören.

Listing 2

$ pgrep -lu root wicd
1811 wicd
1836 wicd-monitor

Auch der Schalter -v erweist sich oft als hilfreich: Damit invertieren Sie den Filter. So sehen Sie alle Prozesse, die nicht dem Suchkriterium entsprechen. Der Aufruf pgrep -v -u thomas zeigt alle Prozesse an, die nicht zum Benutzer thomas gehören. Interessiert Sie lediglich die Anzahl der Prozesse, hilft die Option -c ("count") weiter.

Netzwerkpakete

Was Pgrep bei der Suche in der Prozessliste bietet, das leistet Ngrep [12] für den Datenverkehr im Netzwerk. Die Software durchsucht den Traffic und filtert jene Verbindungen und Pakete heraus, auf die das angegebene Suchmuster passt. Herausfiltern bedeutet hier nicht das Blockieren im Datenstrom wie bei einer Firewall: Das Tool teilt lediglich mit, dass ein solches Paket im Datenstrom aufgetaucht ist.

Ngrep versteht sich auf TCP-, UDP- und ICMP-Verbindungen über Ethernet, Point-to-Point Protocol (PPP), Serial Line Internet Protocol (SLIP) und Fiber Distributed Data Interface (FDDI). Eine inhaltsbezogene Suche funktioniert nur sinnvoll bei den verschiedenen Klartextprotokollen, wie SMTP, HTTP, FTP und POP3. Beim Übertragen verschlüsselter Daten erhalten Sie dagegen keine geeigneten Treffer. Als Suchmuster kommt bei Bedarf ein regulärer Ausdruck zum Einsatz. Die Tabelle "Ngrep-Beispiele" zeigt einige kommentierte Beispiele für den Einsatz von Ngrep. Weitere Details und Optionen bietet die umfangreiche Manpage.

Ngrep-Beispiele

Kommando Kommentar
ngrep -q GET GET-Requests ermitteln.
ngrep 'USER|PASS' src host 192.168.0.20 and src tcp port 21 Accountdaten bei FTP-Zugriffen ermitteln. Das Kommando sucht im Datenstrom nach den Zeichenketten USER oder PASS. Dabei betrachtet es alle Pakete, die vom Host 192.168.0.20 kommen und Quell- oder Zielport 21 (FTP) besitzen.
ngrep SSH port 22 Alle Verbindungen zum SSH-Port 22 anzeigen.
ngrep -iq user-agent tcp port 80 Browsertyp anzeigen, mit dem ein Benutzer auf einen Webserver zugreift. Die Option -i ignoriert Groß- und Kleinschreibung, über q erhalten Sie nur die Kopfzeilen und den Inhalt der Pakete. Mit der Angabe tcp port 80 lauscht Ngrep auf dem Port 80, beschränkt sich dabei aber auf TCP-Verbindungen.

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

1856 Hits
Wertung: 193 Punkte (14 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...