a1de1ec2ac
- Skript deploy/curator-idle-watchdog.sh für 14-Tage-Idle-Erkennung - Spezifikation deploy/specs/curator-idle-watchdog.md - Wöchentliche Prüfung (Sonntag 00:00), Trigger bei Überschreitung
63 lines
1.8 KiB
Bash
63 lines
1.8 KiB
Bash
#!/bin/bash
|
|
# curator-idle-watchdog.sh
|
|
# Prüft den Curator-Idle-Status und triggert Reaktivierung nach 14 Tagen
|
|
|
|
set -euo pipefail
|
|
|
|
LOG_DIR="/home/hitonabi/.hermes/logs/curator"
|
|
LOG_FILE="$LOG_DIR/idle-watchdog-$(date +%Y%m%d).log"
|
|
THRESHOLD_DAYS=14
|
|
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# Curator-Status auslesen
|
|
STATUS_OUTPUT=$(hermes curator status 2>&1) || {
|
|
log "FEHLER: hermes curator status fehlgeschlagen"
|
|
exit 1
|
|
}
|
|
|
|
# Prüfen, ob Curator ENABLED ist
|
|
if ! echo "$STATUS_OUTPUT" | grep -q "^curator: ENABLED$"; then
|
|
log "INFO: Curator ist nicht ENABLED → überspringe Prüfung"
|
|
exit 0
|
|
fi
|
|
|
|
# Letzten Lauf extrahieren (Format: "last run: 17d ago")
|
|
LAST_RUN_LINE=$(echo "$STATUS_OUTPUT" | grep "^ last run:" | head -1)
|
|
if [[ -z "$LAST_RUN_LINE" ]]; then
|
|
log "FEHLER: Konnte 'last run' nicht aus Status extrahieren"
|
|
exit 1
|
|
fi
|
|
|
|
LAST_RUN_TEXT=$(echo "$LAST_RUN_LINE" | sed 's/^ last run: *//')
|
|
log "Letzter Curator-Lauf: $LAST_RUN_TEXT"
|
|
|
|
# Prüfen, ob "d ago" vorhanden ist
|
|
if [[ "$LAST_RUN_TEXT" =~ ([0-9]+)d\ ago ]]; then
|
|
DAYS_SINCE_LAST_RUN="${BASH_REMATCH[1]}"
|
|
else
|
|
log "INFO: Kein 'd ago' gefunden (möglicherweise <1d oder nie gelaufen) → überspringe"
|
|
exit 0
|
|
fi
|
|
|
|
log "Tage seit letztem Lauf: $DAYS_SINCE_LAST_RUN"
|
|
|
|
# Threshold prüfen
|
|
if (( DAYS_SINCE_LAST_RUN < THRESHOLD_DAYS )); then
|
|
log "INFO: Curator ist innerhalb des erlaubten Intervalls ($DAYS_SINCE_LAST_RUN < $THRESHOLD_DAYS Tage) → kein Trigger nötig"
|
|
exit 0
|
|
fi
|
|
|
|
# Reaktivierung triggern
|
|
log "WARNUNG: Curator ist für $DAYS_SINCE_LAST_RUN Tage idle (>= $THRESHOLD_DAYS) → triggere 'hermes curator run'"
|
|
if hermes curator run 2>&1 | tee -a "$LOG_FILE"; then
|
|
log "ERFOLG: Curator-Reaktivierung gestartet"
|
|
else
|
|
log "FEHLER: Curator-Reaktivierung fehlgeschlagen"
|
|
exit 1
|
|
fi
|