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