如何在电源和电源的情况下指定在使用NUT关闭之前运行的命令网络故障?

时间:2016-04-17 19:04:05

标签: bash raspberry-pi2 shutdown

我有一个带有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分钟,然后远程地将鼻子和树莓隔开。 当断电和恢复供电时,我会收到短信。

但有一个特殊情况:如果覆盆子在电池上失去与ups的连接,树莓几乎立即关闭......我认为这是一种保护行为,但我想插入一个卷曲在关机前发送短信的命令,如“断电和连接故障” (我知道命令本身,这不是问题) 我知道我必须在upsmon.conf中添加类似“DEADTIME”或“NOTIFYFLAG NOCOMM”或“COMMBAD”的内容,但不知道该选择什么... 我需要在“notifycmd”文件中添加什么内容?

由于

1 个答案:

答案 0 :(得分:0)

如果您认为这对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添加一个保护套:

    只要通讯中断,就会触发
  • COMMBAD
  • 只要通讯恢复,就会触发
  • COMMOK
  • 只要通讯一段时间未恢复,便会触发NOCOMM

此外,考虑将NOTIFYCMD仅仅用于通知某些内容,而不要执行肮脏的工作(例如,关闭系统)。