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.txtschreibt.
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
