#!/bin/bash # ── Log file watcher ────────────────────────────────────────────────────────── # Polls /nginx-logs every 30s. If a new proxy-host-*_access.log appears, # reloads fail2ban so it picks up the new file immediately. # ───────────────────────────────────────────────────────────────────────────── LOG_DIR="${LOG_DIR:-/nginx-logs}" INTERVAL=30 known=$(ls "$LOG_DIR"/proxy-host-*_access.log 2>/dev/null | sort | tr '\n' ':') echo "[logwatch] Watching $LOG_DIR for new proxy-host log files..." while true; do sleep "$INTERVAL" current=$(ls "$LOG_DIR"/proxy-host-*_access.log 2>/dev/null | sort | tr '\n' ':') if [ "$current" != "$known" ]; then echo "[logwatch] New log file(s) detected — reloading fail2ban" fail2ban-client reload 2>&1 | sed 's/^/[logwatch] /' known="$current" fi done