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