45 lines
1.6 KiB
Bash
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"
|