zl程序教程

您现在的位置是:首页 >  其他

当前栏目

树莓派UPS自定义关机脚本(NUT)

2023-03-07 09:13:22 时间

NUT 树莓派自定义关机逻辑,上一篇文章太长了,拉出来一些:

默认关机逻辑貌似是:nut服务会在UPS发送LOWBATT时通知机器关机,触发时机默认为ups电量剩余20%

如果要自定义关机设置需要进行如下设置(因为群辉提供的ups服务器在ups断电之前就关闭了,不清楚服务器在关机之前是不是会发送lowbatt消息)

1.编辑upsmon.conf,添加以下内容:

vim /etc/nut/upsmon.conf

NOTIFYCMD /sbin/upssched

NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

通知类型定义:

NOTIFYMSG type message

upsmon comes with a set of stock messages for various events. You can change them if you like.

NOTIFYMSG ONLINE "UPS %s is getting line power"

NOTIFYMSG ONBATT "Someone pulled the plug on %s"

Note that %s is replaced with the identifier of the UPS in question.

The message must be one element in the configuration file, so if it contains spaces, you must wrap it in quotes.

NOTIFYMSG NOCOMM "Someone stole UPS %s"

Possible values for type:

ONLINE

UPS is back online

ONBATT

UPS is on battery

LOWBATT

UPS is on battery and has a low battery (is critical)

FSD

UPS is being shutdown by the primary (FSD = "Forced Shutdown")

COMMOK

Communications established with the UPS

COMMBAD

Communications lost to the UPS

SHUTDOWN

The system is being shutdown

REPLBATT

The UPS battery is bad and needs to be replaced

NOCOMM

A UPS is unavailable (can’t be contacted for monitoring)

NOTIFYFLAG type flag[+flag]…

By default, upsmon sends walls global messages to all logged in users) via /bin/wall and writes to the syslog when things happen. Except for Windows where upsmon only writes to the syslog by default. You can change this.

Examples:

NOTIFYFLAG ONLINE SYSLOG

NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

Possible values for the flags:

SYSLOG

Write the message to the syslog

WALL

Write the message to all users with /bin/wall

EXEC

Execute NOTIFYCMD (see above) with the message

IGNORE

Don’t do anything

If you use IGNORE, don’t use any other flags on the same line.

2.修改upssched.conf添加以下内容

vim /etc/nut/upssched.conf

CMDSCRIPT /etc/nut/upssched-cmd #编写此脚本设置

# NOTIFYCMD /sbin/upssched

# NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

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

3.编辑upssched-cmd脚本

vim /etc/nut/upssched-cmd

文件内容:

#!/bin/sh

case $1 in

onbatt)

logger -t upssched-cmd "UPS running on battery"

# do somethings ,e.g.send email \ wechat

/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

修改完成之后重启服务。