ESXI 6.x 虚拟机连接UPS实现断电自动关机的脚本
虚拟机添加usb设备,选择ups的usb,并在虚拟机中安装配套的ups软件,设置断电自动关机,比如10分钟。
如果主板支持通电开机,ups虚拟机还需要设置自动启动,时间和顺序自行掌控。
所有虚拟机尽量安装vmtools,调用系统的关机,而不是关闭电源。
系统-自动启动,配置安装了vmtools的虚拟机,停止操作设置为关机,等待信号检测:是。
先简单了解一下几条命令:
1、获取ESXI上的所有虚拟机VMID的值
1 |
<span style="font-size: 14pt"><code class="">vim-cmd vmsvc/getallvms</code></span> |
2、把虚拟机正常关机
1 |
<span style="font-size: 14pt"><code class="">vim-cmd vmsvc/power.shutdown vmid的值</code></span> |
3、把虚拟机强制关闭电源
1 |
<span style="font-size: 14pt"><code class="">vim-cmd vmsvc/power.off vmid的值</code></span> |
开始干活:
#进入ESXI的存储盘
1 |
cd /vmfs/volumes/datastore1 |
#建立ups文件夹
1 |
mkdir ups |
#进入ups文件夹
1 |
cd ups |
#编辑ups.sh文件
1 |
vi ups.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<span style="font-size: 14pt">#以下为 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 的内容结束</span></code><span style="font-size: 14pt"> #编辑monitor.sh,守护ups.sh这个脚本正常运行 </span><code class="">vi monitor.sh</code><code class=""><span style="font-size: 14pt"># monitor.sh 的内容开始</span><span style="font-size: 14pt">NUM=`ps -c | grep ups.sh | grep -v grep |wc -l`</span><span style="font-size: 14pt">echo ${NUM}</span><span style="font-size: 14pt">if [ "${NUM}" -lt "1" ];then</span><span style="font-size: 14pt"> /vmfs/volumes/datastore1/ups/ups.sh &</span><span style="font-size: 14pt"> echo 'monitor start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log</span><span style="font-size: 14pt">fi</span><span style="font-size: 14pt">exit 0</span><span style="font-size: 14pt">#monitor.sh 的内容结束</span></code><span style="font-size: 14pt">#调整两个脚本的权限 </span><code class=""><span style="font-size: 14pt">chmod 755 monitor.sh</span><span style="font-size: 14pt">chmod 755 ups.sh</span></code><span style="font-size: 14pt"> #esxi重启后引导会自动恢复初始状态 需要添加一个每次启动自动写引导 </span><code class="">vi /etc/rc.local.d/local.sh</code><span style="font-size: 14pt"> #在exit之前添加以下cron代码,3分钟执行一次守护进程 </span><code class=""><span style="font-size: 14pt">/bin/kill $(cat /var/run/crond.pid)</span><span style="font-size: 14pt">/bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/monitor.sh' >> /var/spool/cron/crontabs/root</span><span style="font-size: 14pt">/usr/lib/vmware/busybox/bin/busybox crond</span></code><span style="font-size: 14pt"> #需要执行一次/sbin/auto-backup.sh命令,我们上面编辑的脚本才真正的保存 </span><code class="">/sbin/auto-backup.sh |
本文摘自:https://wp.gxnas.com/10572.html,感谢原作者
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END