在Debian服务器上,我成功地安装了nut包,这样我的EllipsePro1200UPS状态就可以通过USB获取(upsc my-ups返回电池级别)。
注意:我还没有测试当停电发生时会发生什么。
此UPS为此Debian服务器以外的其他设备提供电源:一些路由器/交换机和NAS。
在这种情况下,考虑到我认为NUT的工作方式,我应该在NAS上安装NUT并将它声明为NUT从服务器,这样Debian服务器(NUT主服务器)将命令NAS在电池不足时关闭,然后关闭自己。
问题是我不能在NAS上安装NUT (不支持操作系统),但是我可以SSH告诉它关闭。
我如何/在哪里把我自己的剧本(S)和NUT通常会运行的命令关闭它的奴隶?
我唯一能找到的地方是/etc/nut/upsmon.conf文件中的SHUTDOWNCMD:
SHUTDOWNCMD "/sbin/shutdown -h +0"我猜我可以用一个手工脚本代替这个命令,这个脚本将运行SSH-关机命令,并以关闭Debian服务器而结束。
问题是,SHUTDOWNCMD似乎是为最后一次的动作:当电池非常低。联系我自己脚本中的所有其他设备可能比我在耗尽电池之前花费更多的时间。
谢谢
发布于 2015-05-08 10:20:30
您可以尝试在事件触发后使用upssched.conf(5)在计时器上运行自己的脚本。
一个基本的upssched.conf应该是这样的:
CMDSCRIPT /bin/your-script.sh
AT ONBATT * EXECUTE emailonbatt
AT ONBATT * START-TIMER upsonbatt 300
AT ONLINE * EXECUTE emailonline
AT ONLINE * CANCEL-TIMER upsonbatt upsonline有了这一点,国家统计局将:
/bin/your-script.sh emailonbatt。/bin/your-script.sh upsonbatt。/bin/your-script.sh emailonline。upsonbatt计时器仍然处于活动状态,也要立即取消它。否则,运行/bin/your-script.sh upsonline。脚本可以是这样的:
#!/bin/bash
case $1 in
emailonbatt)
mail -s "UPS on battery power" your@email.com
;;
emailonline)
mail -s "UPS on line power" your@email.com
;;
upsonbatt)
ssh root@nas shutdown -h +0
;;
upsonline)
etherwake 01:23:45:AB:CD:EF
;;
esacAT语句的语法可以在upssched.conf(5)的手册页中找到,可用的通知事件类型可以在upsmon(8)的手册页中找到。
发布于 2014-10-29 15:05:01
你想要做的事情(使用预先设定的钩子)是最优雅的方法。
但是,如果由于没有钩子或这些钩子不适合您的需要,这是不可能的,那么轮询方法也是一种选择。
您可以在/var/log文件中监视NUT组件的输出。
例如,我的( Debian 7上的Salicru UPS )记录如下:
10月28日13:37:49主机名upsmon一七六六:UPS salicru@caramon on caramon
当UPS切换到电池时
10月28日13:39:39主机名upsmon一七六六:UPS salicru@caramon在线电源
当电力恢复的时候。
您可以模拟电源故障,查看日志消息,然后编写一个cron作业,该作业每分钟(或5分钟)运行一次,在日志中查找这些行并执行您想要的操作。
https://unix.stackexchange.com/questions/164788
复制相似问题