Files
2026-05-12 15:51:17 +02:00

61 lines
1.3 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
CACHE_FILE="/tmp/f2b-container"
resolve_container() {
# 1. Versuch: Compose Label
local c
c=$(docker ps \
--filter "label=com.docker.compose.service=fail2ban" \
--format '{{.Names}}' \
| head -n 1)
if [[ -n "$c" ]]; then
echo "$c"
return
fi
# 2. Fallback: Kandidaten
local CANDIDATES=("fail2ban" "fail-2-ban" "f2b")
for name in "${CANDIDATES[@]}"; do
if docker ps --format '{{.Names}}' | grep -qx "$name"; then
echo "$name"
return
fi
done
return 1
}
# --- Cache verwenden ---
if [[ -f "$CACHE_FILE" ]]; then
CONTAINER=$(<"$CACHE_FILE")
# prüfen ob er noch läuft
if ! docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
CONTAINER=""
fi
else
CONTAINER=""
fi
# --- neu auflösen wenn nötig ---
if [[ -z "${CONTAINER:-}" ]]; then
CONTAINER=$(resolve_container || true)
if [[ -z "$CONTAINER" ]]; then
echo "❌ Kein fail2ban-Container gefunden"
exit 1
fi
echo "$CONTAINER" > "$CACHE_FILE"
fi
# --- Aufruf ---
if [[ $# -eq 0 ]]; then
docker exec -i "$CONTAINER" fail2ban-client -h
else
docker exec -i "$CONTAINER" fail2ban-client "$@"
fi