本地拓扑图:

先讲思路:
ups接市电,当市电断电后,ups将会发送信号给所有接入的监控服务器(192.168.110.154),监控服务器接收到市电断电信号后,进行后续的操作:通知vmware esxi(192.168.110.152)服务器优雅关机。
这里的监控服务器并不是vmware服务器,是vmware服务器里的虚拟机,我也研究过使用vmware来做监控机,但是vmware7.0把很多功能和权限都阉割掉了,走不通,所以只能把连接ups的usb信号透传给虚拟机,使用centos的虚拟机来做监控机了。
这个帖子并没有一步一步详细指导安装,只贴了各种配置内容:
下面贴监控机(192.168.110.154)的配置
vim /etc/ups/upsmon.conf
SHUTDOWNCMD "/sbin/true"
NOTIFYCMD /usr/local/bin/ups_timer.sh
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
# 在文件最后一行添加
MONITOR santak_ups@localhost 1 admin mypassword primaryvim /etc/ups/upssched.conf
#调用ups_timer.sh脚本
CMDSCRIPT /usr/local/bin/ups_timer.sh
PIPEFN /run/nut/upssched.pipe
LOCKFN /run/nut/upssched.lock
# 只有两个逻辑:断电开启 300秒计时;恢复则取消
AT ONBATT * START-TIMER shutdown-now 300
AT ONLINE * CANCEL-TIMER shutdown-nowvi /usr/local/bin/ups_timer.sh
(下载文件后,须命名为ups_timer.sh)
#还需要设置脚本可执行:
chmod +x /usr/local/bin/ups_timer.sh
vi /etc/rc.d/rc.local
# 设置开机启动,没有使用systemctl服务,测试systemctl服务里有问题,就使用了的rc.local的自动启动
mkdir -p /run/nut/upssched
chown -R nut:nut /run/nut/upssched
mkdir -p /run/nut
chown nut:nut /run/nut
chmod 700 /run/nut
mkdir -p /run/ups
chown nut:nut /run/ups
chmod 770 /run/ups
# 2. 彻底清理可能残留的进程(防止你看到的 Fatal error)
/usr/sbin/upsmon -c stop >/dev/null 2>&1
/usr/sbin/upsd -c stop >/dev/null 2>&1
/usr/sbin/upsdrvctl stop >/dev/null 2>&1
# 3. 启动驱动
/usr/sbin/upsdrvctl start
sleep 5
# 4. 权限修正(这是你能看到 OL 的关键)
chown nut:nut /run/nut/nutdrv_qx-santak_ups
chmod 666 /run/nut/nutdrv_qx-santak_ups
# 5. 启动服务端 (upsd) - 绕过 systemctl
/usr/sbin/upsd -u nut
# 6. 启动监控端 (upsmon) - 绕过 systemctl
/usr/sbin/upsmon再贴一些信息:
centos upsmon版本:
Network UPS Tools upsmon 2.8.0
查看ups当前状态:
upsc santak_ups@localhost ups.status
输出结果OL或者OB
模拟断电事件:
UPSNAME=santak_ups NOTIFYTYPE=ONBATT /usr/local/bin/ups_timer.sh "UPS santak_ups@localhost on battery"
查看输出日志:
tail -f /var/log/ups_shutdown.log
原创文章,作者:大洋哥,如若转载,请注明出处:https://www.unfit.cn/archives/207.html