Harden Pushover error notifications on abort

This commit is contained in:
René Mathieu
2026-03-08 15:25:22 +01:00
parent 02dfb054b5
commit 6f654ffdb3

View File

@@ -18,6 +18,7 @@ set -Eeuo pipefail
WG_IF="wg0" WG_IF="wg0"
VPN_TEST_IP="10.202.101.10" VPN_TEST_IP="10.202.101.10"
WG_WAS_STARTED_BY_SCRIPT=0 WG_WAS_STARTED_BY_SCRIPT=0
PUSHOVER_FAILURE_SENT=0
LOCK_FILE="/var/lock/agathe_backup.lock" LOCK_FILE="/var/lock/agathe_backup.lock"
@@ -89,16 +90,27 @@ send_pushover() {
local priority="${2:-0}" local priority="${2:-0}"
if command -v curl >/dev/null 2>&1; then if command -v curl >/dev/null 2>&1; then
curl -s \ local rc
set +e
curl -fsS --max-time 20 --retry 2 --retry-delay 2 \
--form-string "token=${PUSHOVER_API_TOKEN}" \ --form-string "token=${PUSHOVER_API_TOKEN}" \
--form-string "user=${PUSHOVER_USER_TOKEN}" \ --form-string "user=${PUSHOVER_USER_TOKEN}" \
--form-string "title=${PUSHOVER_TITLE}" \ --form-string "title=${PUSHOVER_TITLE}" \
--form-string "message=${message}" \ --form-string "message=${message}" \
--form-string "priority=${priority}" \ --form-string "priority=${priority}" \
https://api.pushover.net/1/messages.json >/dev/null || true https://api.pushover.net/1/messages.json >/dev/null
rc=$?
set -e
if [[ "$rc" -ne 0 ]]; then
log "WARNUNG: Pushover konnte nicht gesendet werden (curl Exit-Code: $rc)."
return 1
fi
else else
log "WARNUNG: curl fehlt, Pushover konnte nicht gesendet werden." log "WARNUNG: curl fehlt, Pushover konnte nicht gesendet werden."
return 1
fi fi
return 0
} }
need_root() { need_root() {
@@ -148,13 +160,22 @@ on_error() {
local exit_code=$? local exit_code=$?
local line_no="${1:-unknown}" local line_no="${1:-unknown}"
log "FEHLER in Zeile ${line_no}, Exit-Code ${exit_code}" log "FEHLER in Zeile ${line_no}, Exit-Code ${exit_code}"
send_pushover "Backup FEHLER auf $(hostname): Zeile ${line_no}, Exit-Code ${exit_code}" 1 if send_pushover "Backup FEHLER auf $(hostname): Zeile ${line_no}, Exit-Code ${exit_code}" 1; then
PUSHOVER_FAILURE_SENT=1
fi
trap - EXIT trap - EXIT
cleanup cleanup
exit "$exit_code" exit "$exit_code"
} }
on_exit() { on_exit() {
local exit_code=$?
if [[ "$exit_code" -ne 0 && "$PUSHOVER_FAILURE_SENT" -eq 0 ]]; then
log "WARNUNG: Abbruch ohne ERR-Notification erkannt (Exit-Code ${exit_code}), sende Fallback-Pushover."
if send_pushover "Backup FEHLER auf $(hostname): Exit-Code ${exit_code} (EXIT trap)." 1; then
PUSHOVER_FAILURE_SENT=1
fi
fi
cleanup cleanup
} }