Cal's Blog

Cal's Blog
写字的地方
  1. 首页
  2. 服务器
  3. 正文

普通UPS与ESXi联动 实现断电自动关机

2020年6月20日 2987点热度 17人点赞 0条评论

高级的UPS可以与ESXi系统实现联动完成断电关机

如果UPS的联动软件只支持Windows可以开一个Windows虚拟机实现虚拟机控制宿主机关机,变相实现联动关机。

如果普通UPS不支持系统联动

只能采用曲线救国的方案:当主机Ping不通路由的时候说明路由已经断电,判断为市电已断(路由未接入UPS)

实现方法

开启 ESXi 的 SSH 服务,通过 SSH 在数据盘新建一个脚本文件,比如 /vmfs/volumes/esxi-os/UPS/shutdown.sh,内容如下:

#!/bin/sh
ping -c 1 192.168.3.1 > /dev/null
ret=$?
if [ $ret -eq 0 ]
    then
    echo 'AC Power OK!'
    else
    echo 'AC Power maybe off,checking again after 150 seconds!'
    sleep 150
    ping -c 1 192.168.3.1 > /dev/null
    ret=$?
    if [ $ret -eq 0 ]
        then
        echo 'AC Power OK!'
        else
        echo 'AC Power maybe off,checking again after 100 seconds!'
        sleep 100
        ping -c 1 192.168.3.1 > /dev/null
        ret=$?
        if [ $ret -eq 0 ]
            then
            echo 'AC Power OK!'
            else
            echo 'AC Power off, shutdown esxi-server!'
            /sbin/poweroff
        fi
    fi
fi

为了防止路由器升级重启,或者整理网线导致网线插拔短暂的断网情况,脚本在第一次ping不通之后过150秒继续ping,依然不通再等100秒继续ping,如果还是不通就会进行关机操作

给脚本添加执行权限

chmod 777 /vmfs/volumes/esxi-os/UPS/shutdown.sh

或者

chmod +x /vmfs/volumes/esxi-os/UPS/shutdown.sh

添加一个计划任务,每1分钟执行脚本,由于 ESXi重启后会重置计划任务,所以需要通过修改 /etc/rc.local.d/local.sh文件,实现每次开机时自动添加计划任务
编辑/etc/rc.local.d/local.sh,在 exit 0 前面添加:

/bin/kill $(cat /var/run/crond.pid)
/bin/echo '*/1 * * * * /vmfs/volumes/esxi-os/UPS/shutdown.sh' >> /var/spool/cron/crontabs/root
/bin/crond

可以自行修改脚本重复执行时间

 

标签: 暂无
最后更新:2021年9月21日

caltong

Stay hungry, stay foolish.

点赞
< 上一篇
下一篇 >

文章评论

取消回复

caltong

Stay hungry, stay foolish.

文章分类
  • Python / 1篇
  • Ubuntu / 3篇
  • 博客 / 3篇
  • 服务器 / 5篇
  • 深度学习 / 3篇
  • 算法 / 2篇
  • 网络 / 3篇

COPYRIGHT © 2021 CALTONG.COM. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

浙ICP备20024866号-1