#!/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