Wenn du ein großes Logfile analysierst, möchtest du oft nicht alles sehen, sondern nur die relevanten Zeilen.
Dafür ist grep
das Standard-Tool: Es durchsucht Text nach Mustern und gibt nur die passenden Zeilen aus.
Mit Regex wird es noch flexibler – du kannst damit auch komplexe Muster erkennen.
🔹 Grundlagen von grep
Syntax:
grep MUSTER datei
Beispiele:
- Alle Zeilen mit „ERROR“:
grep "ERROR" syslog
- Suche unabhängig von Groß-/Kleinschreibung:
grep -i "error" syslog
- Zeilennummern mit ausgeben:
grep -n "ssh" auth.log
🔹 Negative Suche mit -v
Manchmal willst du gerade die Zeilen sehen, die nicht ein bestimmtes Muster enthalten:
grep -v "INFO" server.log
👉 Zeigt alles außer den INFO-Meldungen.
🔹 Kontext anzeigen (-A
, -B
, -C
)
- 3 Zeilen nach dem Treffer:
grep -A 3 "ERROR" syslog
- 2 Zeilen vor dem Treffer:
grep -B 2 "ERROR" syslog
- 1 Zeile davor und danach:
grep -C 1 "ERROR" syslog
🔹 Reguläre Ausdrücke mit grep
Mit -E
(oder egrep
) kannst du erweiterte Regex nutzen.
- Alle Zeilen, die mit einer Zahl beginnen:
grep -E "^[0-9]" syslog
- Nur Zeilen mit Statuscode 404 oder 500:
grep -E "404|500" access.log
- Nur Zeilen mit IP-Adressen:
grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log
👉 Regex macht Suchmuster sehr flexibel.
🔹 Beispiel: SSH-Logins analysieren
Datei: /var/log/auth.log
- Nur fehlgeschlagene Logins:
grep "Failed password" auth.log
- Nur erfolgreiche Logins (egal ob Passwort oder Key):
grep "Accepted" auth.log
- Alle SSH-Meldungen (Groß-/Kleinschreibung egal):
grep -i "ssh" auth.log
🔹 grep in Kombination mit tail
Logs live überwachen, aber nur bestimmte Ereignisse sehen:
tail -f syslog | grep "ERROR"
👉 Damit siehst du nur neue Fehler, die währenddessen entstehen.
🔹 Übungen
1. Öffne /var/log/syslog
und finde:
- alle „error“-Meldungen (case-insensitive).
- alle Meldungen, die nicht „info“ enthalten.
2. Suche in /var/log/auth.log
:
- alle fehlgeschlagenen Login-Versuche.
- alle erfolgreichen Logins.
- Bonus: nur die letzten 20 davon (mit
tail
).
3. Nimm ein Apache-Access-Log (/var/log/apache2/access.log
):
- Finde alle 404-Fehler.
- Finde nur die IPs, die solche Fehler verursacht haben.
✅ Zusammenfassung
grep
filtert Logs nach Mustern.
- Mit
-i
,-n
,-v
,-A/-B/-C
kannst du die Suche verfeinern. - Mit Regex (
-E
) lassen sich komplexe Muster beschreiben (IP-Adressen, Statuscodes, Wortgrenzen). - Mit
tail -f | grep
bekommst du Live-Filterung.
👉 Im nächsten Kapitel lernst du, wie du mit sed Logs bereinigst – z. B. Kommentare, Timestamps oder unnötige Informationen entfernst.
📚 Inhaltsverzeichnis
👉 Log-Analyse Kapitel 1: Logs im Terminal lesen – cat, less, tail & grep
👉 Log-Analyse Kapitel 2: Filtern mit grep und regulären Ausdrücken
👉 Log-Analyse Kapitel 3: Logs bereinigen mit sed – inkl. Mehrdatei-Änderungen
👉 Log-Analyse Kapitel 4: Logs analysieren mit awk
👉 Log-Analyse Kapitel 5: Logs kombinieren mit grep, sed, awk, sort, uniq & cut
👉 Log-Analyse Kapitel 6: Praxisprojekt – Apache-/Nginx-Access-Logs analysieren
👉 Log-Analyse Kapitel 7: Praxisprojekt – Systemlogs analysieren (auth.log & journalctl)
⭐ Bonus-Kapitel
👉 Log-Analyse Kapitel 8 (Bonus): Eigene Auswertungs-Skripte für Logs schreiben
👉 Log-Analyse Kapitel 9 (Bonus): Logs visualisieren mit CSV & gnuplot