From 6bfe48e9a98efd390a33007f7ad99059aed1d130 Mon Sep 17 00:00:00 2001 From: wwartana Date: Sun, 8 Feb 2026 18:24:23 +0800 Subject: [PATCH] feat: Add more UPS monitoring event notifications and use short codes for concise alerts in the notification script. --- notify_mikrotik.sh | 22 ++++++++++++++++++---- upsmon.conf | 17 +++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/notify_mikrotik.sh b/notify_mikrotik.sh index 8ccbae8..5425b85 100644 --- a/notify_mikrotik.sh +++ b/notify_mikrotik.sh @@ -6,20 +6,34 @@ MIKROTIK_TARGETS="192.168.7.1 192.168.7.30" TELEGRAM_BOT_TOKEN="6770207225:AAG3yNPepyhhGXqNh8BYjLYUMctc1DSfrH4" TELEGRAM_CHAT_ID="6796478523" +# Map NUT events to Short Codes +case "$1" in + "ONLINE") CODE="OL" ;; + "ONBATT") CODE="OB" ;; + "LOWBATT") CODE="LB" ;; + "COMMOK") CODE="CM_OK" ;; + "COMMBAD") CODE="CM_ERR" ;; + "REPLBATT") CODE="RB" ;; + "FSD") CODE="FSD" ;; + "SHUTDOWN") CODE="SD" ;; + "NOCOMM") CODE="NC" ;; + *) CODE="$1" ;; # Fallback +esac + # Message for Telegram DATE=$(date "+%Y-%m-%d %H:%M:%S") -MESSAGE="UPS Notification: $1 at $DATE" +MESSAGE="UPS Notification: $CODE at $DATE" # 1. Send to Telegram using CURL (Secure) -# # curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d chat_id="$TELEGRAM_CHAT_ID" -d text="$MESSAGE" > /dev/null 2>&1 & +# curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d chat_id="$TELEGRAM_CHAT_ID" -d text="$MESSAGE" > /dev/null 2>&1 & # 2. Send to MikroTik Routers for IP in $MIKROTIK_TARGETS; do # Log event - ssh -i /root/.ssh/id_rsa -y upsuser@$IP "/log warning \"UPS Notification: $1\"" & + ssh -i /root/.ssh/id_rsa -y upsuser@$IP "/log warning \"UPS: $CODE\"" & # Shutdown on Critical - if [ "$1" = "LOWBATT" ] || [ "$1" = "FSD" ]; then + if [ "$CODE" = "LB" ] || [ "$CODE" = "FSD" ]; then ssh -i /root/.ssh/id_rsa -y upsuser@$IP "/system shutdown" & fi done diff --git a/upsmon.conf b/upsmon.conf index d665c71..19b91dd 100644 --- a/upsmon.conf +++ b/upsmon.conf @@ -1,6 +1,23 @@ MONITOR myups@localhost 1 monuser secret master NOTIFYCMD /etc/nut/notify_mikrotik.sh + NOTIFYFLAG ONLINE SYSLOG+EXEC NOTIFYFLAG ONBATT SYSLOG+EXEC NOTIFYFLAG LOWBATT SYSLOG+EXEC +NOTIFYFLAG FSD SYSLOG+EXEC +NOTIFYFLAG COMMOK SYSLOG+EXEC +NOTIFYFLAG COMMBAD SYSLOG+EXEC +NOTIFYFLAG SHUTDOWN SYSLOG+EXEC +NOTIFYFLAG REPLBATT SYSLOG+EXEC +NOTIFYFLAG NOCOMM SYSLOG+EXEC + +NOTIFYMSG ONLINE "ONLINE" +NOTIFYMSG ONBATT "ONBATT" +NOTIFYMSG LOWBATT "LOWBATT" +NOTIFYMSG FSD "FSD" +NOTIFYMSG COMMOK "COMMOK" +NOTIFYMSG COMMBAD "COMMBAD" +NOTIFYMSG SHUTDOWN "SHUTDOWN" +NOTIFYMSG REPLBATT "REPLBATT" +NOTIFYMSG NOCOMM "NOCOMM"