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