Bisher hast du Logs mit einzelnen Befehlen analysiert.
Im Alltag willst du aber oft wiederkehrende Analysen automatisieren – z. B. „Zeig mir die Top-IPs der letzten 24 Stunden“.
Das geht perfekt mit Bash-Skripten, die deine Befehle kombinieren.
🔹 Grundgerüst eines Skripts
Ein Bash-Skript beginnt mit dem „Shebang“:
#!/bin/bash # Mein Log-Analysetool
Mach das Skript ausführbar:
chmod +x analyse.sh
Ausführen:
./analyse.sh
🔹 Beispiel 1: Apache-Analyse
Datei apache_report.sh
:
#!/bin/bash LOGFILE="/var/log/apache2/access.log" echo "=== Top 5 IPs ===" awk '{print $1}' $LOGFILE | sort | uniq -c | sort -nr | head -5 echo echo "=== Statuscodes ===" awk '{print $9}' $LOGFILE | sort | uniq -c | sort -nr echo echo "=== Top 5 Seiten ===" awk '{print $7}' $LOGFILE | sort | uniq -c | sort -nr | head -5
👉 Aufruf:
./apache_report.sh
🔹 Beispiel 2: SSH-Loginversuche
Datei ssh_report.sh
:
#!/bin/bash LOGFILE="/var/log/auth.log" echo "=== Fehlgeschlagene Logins ===" grep "Failed password" $LOGFILE | wc -l echo echo "=== Top 5 Angreifer-IPs ===" grep "Failed password" $LOGFILE | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -5 echo echo "=== Erfolgreiche Logins pro User ===" grep "Accepted" $LOGFILE | awk '{print $9}' | sort | uniq -c | sort -nr
🔹 Beispiel 3: Kombiniertes Skript mit Parametern
Datei logtool.sh
:
#!/bin/bash # Nutzung: ./logtool.sh datei.log "PATTERN" LOGFILE=$1 PATTERN=$2 if [ -z "$LOGFILE" ] || [ -z "$PATTERN" ]; then echo "Usage: $0 logfile pattern" exit 1 fi echo "=== Suche nach: $PATTERN in $LOGFILE ===" grep "$PATTERN" "$LOGFILE" | wc -l
Aufruf:
./logtool.sh /var/log/syslog ERROR
👉 Gibt die Anzahl der „ERROR“-Einträge aus.
🔹 Bonus: Report als Datei speichern
./apache_report.sh > report_$(date +%F).txt
👉 Erstellt eine Report-Datei mit Datum, die du archivieren oder per Mail verschicken kannst.
🔹 Übungen
1. Schreibe ein Skript error_report.sh
, das:
- alle Fehler (
404
,500
) zählt, - die Top-5-Fehlerseiten zeigt,
- und das Ergebnis in eine Datei
errors.txt
schreibt.
2. Erstelle ein Skript daily_report.sh
, das automatisch das aktuelle Datum in den Report einträgt.
3. Bonus: Ergänze dein Skript um Parameter (./daily_report.sh access.log
), sodass du flexibel verschiedene Logs analysieren kannst.
✅ Zusammenfassung
- Mit Bash-Skripten lassen sich Loganalysen automatisieren.
- Du kannst Standard-Auswertungen speichern und immer wieder ausführen.
- Mit Parametern (
$1
,$2
) machst du deine Skripte flexibel. - Reports lassen sich in Dateien schreiben und archivieren.
👉 Im Bonus-Kapitel 9 zeige ich dir noch, wie du Logs visualisieren kannst – z. B. mit CSV-Export oder gnuplot.
📚 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