首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在发生电源和网络故障时,如何指定在NUT关机前运行的命令?

在发生电源和网络故障时,如何指定在NUT关机前运行的命令?
EN

Stack Overflow用户
提问于 2016-04-17 19:04:05
回答 1查看 4.1K关注 0票数 1

我有一个带有usb插入式UPS的NAS。我已经在我的树莓上安装了螺母客户端(只有客户端)来监视UPS。我必须将UPS插到NAS上,因为它是唯一能识别我的UPS的设备(中国通用的,不幸的是在我的国家别无选择)。没有办法让它直接工作,插入覆盆子。由于我只将坚果客户端安装到我的覆盆子中,/etc/nut是空的。我创建了3个文件:

nut.conf

代码语言:javascript
运行
复制
MODE=netclient

upsmon.conf

代码语言:javascript
运行
复制
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"

通知script脚本:

代码语言:javascript
运行
复制
    #!/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命令,在关机前发送短消息,比如“与ups断电和连接失败”(我知道命令本身,这不是问题所在),我知道我必须在upsmon.conf中添加诸如"DEADTIME“或"NOTIFYFLAG NOCOMM”或"COMMBAD“之类的内容,但不确定该选择什么.我必须在我的“通知”文件中添加什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-02-28 17:21:26

如果您认为DEADTIME对您的Raspberry Pi有好处,您可以提高DEADTIME的值。来自最近的一个upsmon.conf:

代码语言:javascript
运行
复制
# 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只是为了通知某件事,而不是做脏的工作(例如关闭系统)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36680913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档