From f182aff3d0e180cf98797e99609ccf5dd9097e1d Mon Sep 17 00:00:00 2001 From: Ssyleric <47066760+Ssyleric@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:03:23 +0100 Subject: [PATCH] Create check-ups-runtime.sh --- check-ups-runtime.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 check-ups-runtime.sh diff --git a/check-ups-runtime.sh b/check-ups-runtime.sh new file mode 100644 index 0000000..b8148bb --- /dev/null +++ b/check-ups-runtime.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +WEBHOOK="https://discord.com/api/webhooks/1234567890987654321/jsdkghfojahjgoaropihjgoirhjfsdighajsdfnbgkvjasznbfgousoghsoaghoasdhgjnsdfjnv;jsdfnvjfsdgnd" +LOGFILE="/var/log/ups-shutdown.log" +STATEFILE="/tmp/ups-runtime-alert.sent" + +UPS_DATA=$(upsc eaton@localhost 2>/dev/null) +STATUS=$(echo "$UPS_DATA" | awk -F': ' '/^ups.status:/ {print $2}') +RUNTIME=$(echo "$UPS_DATA" | awk -F': ' '/^battery.runtime:/ {print $2}') +BATTERY_CHARGE=$(echo "$UPS_DATA" | awk -F': ' '/^battery.charge:/ {print $2}') +MODEL=$(echo "$UPS_DATA" | awk -F': ' '/^device.model:/ {print $2}') + +# Si autonomie < 300 sec et que message pas encore envoyé +if [[ "$RUNTIME" -lt 300 ]]; then + if [[ ! -f "$STATEFILE" ]]; then + MESSAGE="⏱ *$(hostname)* — ⚠️ Autonomie critique UPS à $(date '+%F %T')\n🔋 Batterie : ${BATTERY_CHARGE} %\n⏳ Autonomie : ${RUNTIME} sec\n🖥️ Modèle : ${MODEL}" + echo "$(date '+%F %T') 🚨 ALERTE: autonomie < 300 sec (batt=$BATTERY_CHARGE%, runtime=$RUNTIME sec)" >> "$LOGFILE" + jq -n --arg content "$MESSAGE" '{content: $content}' | \ + curl -s -H "Content-Type: application/json" -X POST -d @- "$WEBHOOK" > /dev/null + touch "$STATEFILE" + fi +else + # Si autonomie > 300 sec, reset le flag d’alerte + [[ -f "$STATEFILE" ]] && rm -f "$STATEFILE" +fi