UPS 低电压时通过群晖实现 Ubuntu 自动关机

群晖设置

首先将群晖设置为 UPS 服务器,当 UPS 的状态信息通过 USB 传输到群晖后,群晖可以通过网络将信息告知接收端。进入控制面板,进入到硬件和电源,勾选“启动网络 UPS 服务器”,进入“允许的 Synology NAS 设备”,在 IP 地址处输入接收端的 IP 即可「确定后别忘了点右下方处的应用」

工具配置

然后在接收端安装接收工具,命令如下:

1
apt -y install nut

修改配置文件,路径为etc/nut/nut.conf,将模式改为客户端,参数如下:

1
MODE=netclient

修改服务指向配置文件,路径为/etc/nut/upsmon.conf,修改以下参数「83 行左右」

1
MONITOR ups@192.168.31.87 1 monuser secret slave

重启接收工具服务:

1
systemctl restart nut-client

将接收服务设置为开机启动:

1
systemctl enable nut-client

线路测试

如果不想通过拔电源来测试上面设置是否生效,可以用 upsc ups@192.168.31.87 命令测试,出现如下信息代表配置成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Init SSL without certificate database
battery.charge: 100
battery.voltage: 13.50
battery.voltage.high: 13.00
battery.voltage.low: 10.40
battery.voltage.nominal: 12.0
device.type: ups
driver.name: blazer_usb
driver.parameter.pollinterval: 5
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: DSM7-1-1-42930-workplus-version2-repack-42930-220712
driver.version.internal: 0.12
input.current.nominal: 4.0
input.frequency: 50.0
input.frequency.nominal: 50
input.voltage: 230.8
input.voltage.fault: 230.8
input.voltage.nominal: 220
output.voltage: 230.8
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.load: 0
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665

关机脚本

服务会在 UPS 发送低电压时通知服务器关机,触发时机默认为 UPS 电量剩余约 20%。当然可自定义关机逻辑。如果要自定义关机设置需要进行如下设置,使用如下命令修改配置文件:

1
vim /etc/nut/upsmon.conf

添加如下内容:

1
2
NOTIFYCMD /sbin/upssched
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

然后用命令 vim /etc/nut/upssched.conf 修改配置文件,添加如下内容:

1
2
3
4
5
6
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock
AT ONBATT * START-TIMER power-off 60
AT ONLINE * CANCEL-TIMER power-off
AT ONLINE * EXECUTE power-on

接着用命令 vim /etc/nut/upssched-cmd 修改配置文件,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
case $1 in
onbatt)
logger -t upssched-cmd "UPS running on battery"
/usr/sbin/upsmon -c fsd
;;
power-off)
logger -t upssched-cmd "UPS running on battery power off"
/usr/sbin/upsmon -c fsd
;;
shutdowncritical)
logger -t upssched-cmd "UPS on battery critical, forced shutdown"
/usr/sbin/upsmon -c fsd
;;
upsgone)
logger -t upssched-cmd "UPS has been gone too long, can't reach"
;;
*)
logger -t upssched-cmd "Unrecognized command: $1"
;;
esac

本文链接:https://my.lmcjl.com/post/16610.html

展开阅读全文

4 评论

留下您的评论.