#!/bin/sh # $1 = event type (ONLINE, ONBATT, LOWBATT, FSD, etc.) # Configuration 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: $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 & # 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: $CODE\"" & # Shutdown on Critical if [ "$CODE" = "LB" ] || [ "$CODE" = "FSD" ]; then ssh -i /root/.ssh/id_rsa -y upsuser@$IP "/system shutdown" & fi done wait