ESXI 6.x 虚拟机连接UPS实现断电自动关机的脚本
虚拟机添加usb设备,选择ups的usb,并在虚拟机中安装配套的ups软件,设置断电自动关机,比如10分钟。
如果主板支持通电开机,ups虚拟机还需要设置自动启动,时间和顺序自行掌控。
所有虚拟机尽量安装vmtools,调用系统的关机,而不是关闭电源。
系统-自动启动,配置安装了vmtools的虚拟机,停止操作设置为关机,等待信号检测:是。
先简单了解一下几条命令:
1、获取ESXI上的所有虚拟机VMID的值
vim-cmd vmsvc/getallvms
2、把虚拟机正常关机
vim-cmd vmsvc/power.shutdown vmid的值
3、把虚拟机强制关闭电源
vim-cmd vmsvc/power.off vmid的值
开始干活:
#进入ESXI的存储盘
cd /vmfs/volumes/datastore1
#建立ups文件夹
mkdir ups
#进入ups文件夹
cd ups
#编辑ups.sh文件
vi ups.sh
#以下为 ups.sh 的内容,请酌情修改。 #其中:10.10.10.1 为主路由的IP,sleep 为稍等时间(秒),vmid的值请根据自己的实际情况修改。 #示例:每分钟ping主路由的IP,如果ping不通的话(停电就断网了)5分钟后会再次检测。再次检测如依然不通,则ESXI依次关闭虚拟机后,宿主关机。 #!/bin/sh while ping -c 1 10.10.10.1 > /dev/null [ $? -eq 0 ]; do echo 'AC Power OK !' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log sleep 60 done echo 'AC Power maybe off, checking again after 5 minutes !' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log sleep 300 ping -c 1 10.10.10.1 > /dev/null if [ $? -eq 0 ] then echo 'Checkagain, AC Power OK !' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log else echo 'AC Power is already off, shut down Esxi Now!' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log vim-cmd vmsvc/power.shutdown 11 sleep 60 vim-cmd vmsvc/power.shutdown 10 sleep 60 vim-cmd vmsvc/power.shutdown 6 sleep 60 vim-cmd vmsvc/power.shutdown 3 sleep 60 vim-cmd vmsvc/power.off 2 sleep 60 poweroff fi #ups.sh 的内容结束
#编辑monitor.sh,守护ups.sh这个脚本正常运行vi monitor.sh
# monitor.sh 的内容开始NUM=`ps -c | grep ups.sh | grep -v grep |wc -l`echo ${NUM}if [ "${NUM}" -lt "1" ];then /vmfs/volumes/datastore1/ups/ups.sh & echo 'monitor start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.logfiexit 0#monitor.sh 的内容结束
#调整两个脚本的权限chmod 755 monitor.shchmod 755 ups.sh
#esxi重启后引导会自动恢复初始状态 需要添加一个每次启动自动写引导vi /etc/rc.local.d/local.sh
#在exit之前添加以下cron代码,3分钟执行一次守护进程/bin/kill $(cat /var/run/crond.pid)/bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/monitor.sh' >> /var/spool/cron/crontabs/root/usr/lib/vmware/busybox/bin/busybox crond
#需要执行一次/sbin/auto-backup.sh命令,我们上面编辑的脚本才真正的保存/sbin/auto-backup.sh
本文摘自:https://wp.gxnas.com/10572.html,感谢原作者
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END