Files

45 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# Woechentliches Mesh-Hermes-Update: alle Agenten synchron updaten + verifizieren.
# no_agent cron watchdog: stdout = Nachricht an Nutzer; leere Ausgabe = still.
# ANPASSEN: PW, hosts[] (IP:Name), MASTER_HERMES/REMOTE_HERMES Pfade.
set -u
SSHPASS='PW' # <<< Mesh-einheitliches Passwort eintragen
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"