Решил настроить уведомления в telegramm о выключении и включении сервера (с контролем разных параметров с датчиками автоматизации умного дома). Идея пришла когда заметил что в какой-то момент сервер оказывается выключенным. Да, предварительно я настроил ИБП на выключение сервера при отсутствии питания, но хотелось понять как часто это происходит и оперативно получать информацию в telegramm. Постараюсь сделать полное описание, тем более это я делаю для того чтобы потом вспомнить, когда что-то сломается ….
Настройки проводил все на Debian.
Скрипт /usr/local/bin/ups_server_start.sh (при запуске системы отправляет сообщение в telegramm):
#!/bin/bash
curl -s -X POST —connect-timeout 10 https://api.telegram.org/bot11111111:AAkKhGKhgikgS9IbyCgw6n
RZS-j_UHff0DhMU/sendMessage -d chat_id=-2452457247 -d parse_mode=»HTML» -d text=»<b>`date ‘+Дата:
%m/%d/%y;Время:%H:%M:%S’`</b> <pre>Система на сервере запущена</pre>»root@ipnetcat:~#
Управление с помощью systemd (/etc/systemd/system/after_system_start.service) :
[Unit]
Description=Start MSG
Wants=network-online.target
After=network.target network-online.target
[Service]
ExecStart=/usr/local/bin/ups_server_start.sh
Type=oneshot
[Install]
WantedBy=multi-user.target network-online.target
Настройки NUT (/etc/nut/upsmon.conf)
MONITOR ippon@192.168.1.2 1 upsmon 12345 master
MINSUPPLIES 1
SHUTDOWNCMD «/sbin/shutdown -h +0»
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYMSG ONLINE «UPS %s on line power»
NOTIFYMSG ONBATT «UPS %s on battery»
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Настройки NUT (/etc/nut/upssched.conf)
CMDSCRIPT /usr/local/bin/upssched.sh
PIPEFN /var/run/nut/upssched/upssched.pipe
LOCKFN /var/run/nut/upssched/upssched.lock
AT ONLINE * EXECUTE online
AT ONBATT * EXECUTE onbatt
AT LOWBATT * EXECUTE lowbatt
AT REPLBATT * EXECUTE replbatt
Настройки NUT (/usr/local/bin/upssched.sh):
case $1 in
onbatt)
curl -s -X POST —connect-timeout 10 https://api.telegram.org/bot{IDBOT}/sendMessage -d chat_id={IDCHAT} -d parse_mode=»HTML» —
d text=»<b>`date ‘+Дата:%m/%d/%y;Время:%H:%M:%S’`</b> <pre>Отсутствует электричество, сервер работает от батареи, ларь отключен.</pre>»
;;
online)
curl -s -X POST —connect-timeout 10 https://api.telegram.org/bot{IDBOT}/sendMessage -d chat_id={IDCHAT} -d parse_mode=»HTML» —
d text=»<b>`date ‘+Дата:%m/%d/%y;Время:%H:%M:%S’`</b> <pre>Электричество восстановлено, сервер работает в обычном режиме.</pre>»
;;
lowbatt)
curl -s -X POST —connect-timeout 10 https://api.telegram.org/bot{IDBOT}/sendMessage -d chat_id={IDCHAT} -d parse_mode=»HTML» —
d text=»<b>`date ‘+Дата:%m/%d/%y;Время:%H:%M:%S’`</b> <pre>Батарея низкой зарядки или не заряжается.</pre>»
;;
replbatt)
curl -s -X POST —connect-timeout 10 https://api.telegram.org/bot{IDBOT}/sendMessage -d chat_id={IDCHAT} -d parse_mode=»HTML» —
d text=»<b>`date ‘+Дата:%m/%d/%y;Время:%H:%M:%S’`</b> <pre>Требуется замена батареи</pre>»
;;
esac