#!/usr/bin/env bash # ============================================================================== # 🐧 BASH 08: ROBUSTE SKRIPTE, STRICT MODE, TRAPS & DEBUGGING # ============================================================================== # 🎯 TEILZIEL 1 (TODO 1): Strict Mode aktivieren. # Aktiviere `set -euo pipefail` und gib "STRICT_MODE_ON" aus. aktiviere_strict_mode() { # TODO: Aktiviere set -euo pipefail echo "STRICT_MODE_ON" } # 🎯 TEILZIEL 2 (TODO 2): Strukturierter DevOps-Logger mit Stream-Trennung. # Formatiere die Ausgabe als: `[$(date +'%Y-%m-%d %H:%M:%S')] [$1] $2` # - Wenn $1 == "ERROR" oder $1 == "FATAL": Leite die Ausgabe nach stderr (FD 2) um. # - Für alle anderen Levels (INFO, WARN, DEBUG): Leite nach stdout (FD 1) um. devops_logger() { local level="$1" local meldung="$2" # TODO: Formatiere Zeitstempel und trenne stdout/stderr return 0 } # 🎯 TEILZIEL 3 (TODO 3): Sichere temporäre Ressourcen mit `trap` & `mktemp`. # Erstelle ein temporäres Verzeichnis mit `mktemp -d /tmp/devops_XXXXXX` # und richte einen `trap 'rm -rf "$temp_dir"' EXIT` ein. # Gib den Pfad des temporären Verzeichnisses auf stdout aus. erstelle_temp_verzeichnis_mit_cleanup() { # TODO: Erstelle Verzeichnis mit mktemp -d und registriere EXIT trap return 0 } # 🎯 TEILZIEL 4 (TODO 4): Exklusive Lock-Ausführung mit `flock`. # Führe "$2" (Befehl) geschützt durch die Lock-Datei "$1" mit `flock -n` (non-blocking) aus. # - Wenn Lock erfolgreich: Gib den Exit-Code des Befehls zurück. # - Wenn Lock blockiert ist: Schreibe "RESOURCE_LOCKED" nach stderr und gib Exit-Code 1 zurück. fuehre_exklusiv_mit_lock_aus() { local lock_file="$1" local befehl="$2" # TODO: Nutze flock -n "$lock_file" -c "$befehl" return 0 } # 🎯 TEILZIEL 5 (TODO 5): Debug Trace Modus temporär steuern. # Aktiviere temporär den Bash-Trace-Modus `set -x`, führe "$1" aus und deaktiviere mit `set +x`. debug_trace_ausfuehren() { local befehl="$1" # TODO: Schalte set -x ein, führe befehl aus, schalte mit set +x aus return 0 }