我有一个带有USB插入式UPS的NAS。我在树莓派上安装了螺母客户端(仅客户端)以监视UPS。我必须将UPS插入NAS,因为它是识别我的UPS的唯一设备(不幸的是,这是中国通用的通用设备)。无法使其直接插入树莓派。因为我只在树莓派中安装了螺母客户端,所以/ etc / nut是空的。我已经创建了3个文件:
nut.conf
MODE=netclient
upsmon.conf
MONITOR login@nas_ip 1 admin password slave
SHUTDOWNCMD "/sbin/shutdown -h now"
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYCMD "/etc/nut/notifycmd"
notifycmd脚本:
#!/bin/bash
#
# NUT NOTIFYCMD script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
trap "exit 0" SIGTERM
if [ "$NOTIFYTYPE" = "ONLINE" ]
then
echo $0: power restored | wall
# curl command to send me a sms
# Cause all instances of this script to exit.
killall -s SIGTERM `basename $0`
fi
if [ "$NOTIFYTYPE" = "ONBATT" ]
then
echo $0: 40 minutes till system powers down... | wall
#curl command to send me a sms
# Loop with one second interval to allow SIGTERM reception.
let "n = 2400"
while [ $n -ne 0 ]
do
sleep 1
let "n--"
done
echo $0: commencing shutdown | wall
sleep 10
upsmon -c fsd
fi
我的UPS具有强大的功能,可以等待40分钟,然后再远程关闭nas和树莓。断电和恢复供电后,我会收到一条短信。
但是有一个特例:如果覆盆子在用电池供电时失去与ups的连接,覆盆子几乎立即关闭...我认为这是一种保护行为,但是我想插入curl命令会在关机前发送短信,例如“断电和连接失败并出现故障”(我知道命令本身,这不是问题)我知道我必须在upsmon.conf中添加“ DEADTIME”或“ NOTIFYFLAG NOCOMM”或“ COMMBAD”之类的内容,但不确定该选择什么。我必须在“ notifycmd”文件中添加什么?
谢谢
如果您认为这对您的Raspberry Pi有好处,则可以提高DEADTIME的值。来自最近的upsmon.conf:
# upsmon requires a UPS to provide status information every few seconds
# (see POLLFREQ and POLLFREQALERT) to keep things updated. If the status
# fetch fails, the UPS is marked stale. If it stays stale for more than
# DEADTIME seconds, the UPS is marked dead.
#
# A dead UPS that was last known to be on battery is assumed to have gone
# to a low battery condition. This may force a shutdown if it is providing
# a critical amount of power to your system.
如果您确定UPS可以为Raspberry Pi装上足够的电池(即使您无法与之交谈,则可以将DEADTIME设置为120(2分钟),甚至300(5分钟)。请记住,该值应该是POLLFREQ和POLLFREQALERT的倍数。
此后,upsmon将有更多时间运行您的NOTIFYCMD。现在,只需为COMMBAD添加一个保护套:
此外,请考虑将NOTIFYCMD仅仅用于通知某些内容,而不要执行肮脏的工作(例如,关闭系统)。