admin管理员组

文章数量:1582014

ESXi加UPS断电自动关机脚本

文章目录

  • ESXi加UPS断电自动关机脚本
    • 遇到的问题
    • 解决
      • 解决思路
      • 脚本
    • 参考链接

遇到的问题

办公室有的时候会断电,公司的服务器也会随着一起断电,并且断电会损害硬盘。

解决

解决思路

  • 服务器接上ups,在断电的时候服务器因为有ups供电可以暂时不断。
  • 服务器中起一个脚本一直监测路由器的状态,一旦路由器ping不通了,把服务器用命令进行关机操作。
  • 使用脚本来实现上述步骤。

脚本

  • ping网关,ping不通就重启的脚本
#!/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

参考链接

ESXi加UPS断电自动关机脚本

本文标签: 脚本自动关机ESXiUPS