不忘初心,方得始终.

ESXi加UPS断电自动关机脚本

被电力局搞怕了,随时都可以停电,并且没有通知!今年已经好几次了!
怀疑我的硬盘就是这样坏的.
随后败了一台UPS,APC的BX550CI-CN,就这个样子

没有USB接口,服务器不能知晓是否UPS在供电(就算有,ESXi也用不上,尴尬)

写了一个小脚本,让ESXi来ping网关(路由器,插市电),如果网关3分钟都是失联状态,就判断停电了,自动执行关机命令

#!/bin/sh
while
ping -c 1 10.1.1.1 > /dev/null
[ $? -eq 0 ];
do
#echo ' AC Power OK ! ' >> /vmfs/volumes/磁盘名/ups/ups.log;date >> /vmfs/volumes/磁盘名/ups/ups.log
sleep 180
done
echo ' AC Power maybe off, checking again after 3 minutes ! ' >> /vmfs/volumes/磁盘名/ups/ups.log;date >> /vmfs/volumes/磁盘名/ups/ups.log
sleep 60
ping -c 1 10.1.1.1 > /dev/null
if [ $? -eq 0 ]
then
echo ' Checkagain, AC Power OK ! ' >> /vmfs/volumes/磁盘名/ups/ups.log;date >> /vmfs/volumes/磁盘名/ups/ups.log
else
echo ' AC Power is already off, shut down NAS Now! ' >> /vmfs/volumes/磁盘名/ups/ups.log;date >> /vmfs/volumes/磁盘名/ups/ups.log
/bin/shutdown.sh
halt
fi

以上代码保存成apc.sh放到/vmfs/volumes/磁盘名/ups/目录下,目录下同时创建ups.log空白日志文件

然后再写一个守护

#! /bin/sh
#    用ps获取ups进程数量
NUM=`ps -c | grep apc.sh | grep -v grep |wc -l`
echo ${NUM}
#    少于1,重启进程
if [ "${NUM}" -lt "1" ];then
/vmfs/volumes/磁盘名/ups/apc.sh &
echo ' UPS shouhu start' >> /vmfs/volumes/磁盘名/ups/ups.log;date >> /vmfs/volumes/磁盘名/ups/ups.log
fi
exit 0

守护脚本保存成ups_shouhu.sh也放到/vmfs/volumes/磁盘名/ups/目录下

然后添加一个计划任务,每三分钟执行守护脚本
由于ESXi重启会重置计划任务的内容,所以添加到启动

/etc/rc.local.d/local.sh文件里添加

/bin/kill $(cat /var/run/crond.pid)
/bin/echo '*/3    *    *   *   *   /vmfs/volumes/磁盘名/ups/ups_shouhu.sh' >> /var/spool/cron/crontabs/root
/bin/crond
exit 0

然后就有了一台会自动关机的GEN8了,麻麻再也不用担心异常停电了~

---------------华丽的分割线---------------
下面记录一下自动开机,如果路由器发现服务器不在线,就执行wol唤醒服务器

路由器创建一个计划任务,每三分钟执行

#Power for Gen8
ping -c 10 -w 10.1.1.2 > /dev/null
ret=$?
if [ $ret -ne 0 ]
then
ether-wake XX:XX:XX:XX:XX:XX
fi

自动关机,自动开机,都搞定icon_smile.gif

参考了不少大神的代码,我都忘记来源了,没办法一一列上,见谅

已有 9 条评论
  1. ahfncj

    如果买带USB的UPS是否可以让esxi自动关机呢

    ahfncj [Win10 x64 Chrome 64.0.3282.140] 回复
  2. 夕凉

    冒泡一波 icon_smile.gif

    夕凉 [Win10 x64 Firefox 58.0] 回复
  3. 日后再说

    谢谢博主,我测试应该没问题,我还没有测试关机,请问执行/bin/shutdown.sh他是会按照我设置的关机顺序关机吗?如果我的虚拟机里面有很多linux系统,没有安装tools他应该可以强制断电吧

    日后再说 [Win7 x64 Chrome 62.0.3202.89] 回复
  4. john

    博主,我照着你这个方案在esxi 6.0上做了一遍。
    但是并没有用。
    看了一下守护脚本起不来。
    手动运行apc.sh是可以达到自动关机的效果的。
    我猜是local.sh那里有点问题。

    john [Win10 x64 Chrome 57.0.2987.133] 回复
    1. WeiCN

      那你在log里可以看到守护的启动信息吗?

      WeiCN 博主 [Win10 x64 Chrome 56.0.2924.87] 回复
      1. john

        看不到的。
        我不手动启动apc.sh的话日志就一直是空的。
        手动启动以后,并且把网关断电以后会有日志记录。
        AC Power maybe off, checking again after 3 minutes !
        Fri Apr 14 14:06:28 UTC 2017
        AC Power is already off, shut down NAS Now!
        Fri Apr 14 14:07:39 UTC 2017

        但是没有守护启动的信息。

        john [Win10 x64 Chrome 57.0.2987.133] 回复
        1. WeiCN

          /bin/echo '*/3 * * * * /vmfs/volumes/磁盘名/ups/ups_shouhu.sh' >> /var/spool/cron/crontabs/root

          这个是一行,可能是网页上被换行了,你重新编辑一下

          WeiCN 博主 [Win10 x64 Chrome 56.0.2924.87] 回复
          1. john

            试了一下,还是不行。
            日志文件还是没有记录。
            守护脚本起不来。

            john [Win10 x64 Chrome 57.0.2987.133]
          2. john

            OK,我试试看,晚点给结果。

            john [Win10 x64 Chrome 57.0.2987.133]
发表新评论 选择表情