#!/usr/bin/env bash # Woechentliches Mesh-Hermes-Update: alle 4 Agenten synchron updaten + verifizieren. # no_agent cron watchdog: stdout = Nachricht an Nutzer; leere Ausgabe = still. set -u SSHPASS='Bp3lskt0' SSH=(sshpass -p "$SSHPASS" ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no) MASTER_HERMES=/root/.local/bin/hermes REMOTE_HERMES='~/.local/bin/hermes' hosts=(172.24.34.142:UnraidHermes 172.24.20.26:SwitchHermes 172.24.178.202:LaptopHermes) report="" status_ok=1 # --- Master (lokal) --- if [ -x "$MASTER_HERMES" ]; then mver_before=$("$MASTER_HERMES" --version 2>/dev/null | head -1) "$MASTER_HERMES" update --yes >/tmp/hermes_upd_master.log 2>&1 mver_after=$("$MASTER_HERMES" --version 2>/dev/null | head -1) report+="Master: ${mver_before##*v} -> ${mver_after##*v}\n" [ "$mver_before" != "$mver_after" ] || report+=" (kein Update noetig)\n" else report+="Master: hermes nicht gefunden\n"; status_ok=0 fi # --- Sub-Agenten (per SSH) --- for entry in "${hosts[@]}"; do ip="${entry%%:*}"; name="${entry##*:}" out=$("${SSH[@]}" "mehlzoerwer@$ip" \ "$REMOTE_HERMES update --yes 2>&1 | tail -1; $REMOTE_HERMES --version 2>/dev/null | head -1" 2>/dev/null) if [ -n "$out" ]; then ver=$(echo "$out" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1) report+="$name: $ver\n" else report+="$name: KEINE VERBINDUNG / FEHLER\n"; status_ok=0 fi done report="Hermes-Mesh Update ($(date '+%d.%m. %H:%M')):\n$report" [ $status_ok -eq 1 ] && report+="Status: alle ok" || report+="Status: PROBLEM - bitte pruefen!" printf '%b' "$report"