VMware esxcli定时开启虚拟机、维护开机状态

怎么让虚拟机一直运行,或者虚拟机vms定时开机关机,后台定时检测虚拟机停止就自动开机

可以写脚本结合crond定时执行。

思路

1.检测虚拟机是否已开机

2.开机不执行任何操作,退出;否则开机打开电源

3.用crond定时执行检测脚本

开搞

esxcli vm process list                              # 利用esxcli列出ESXi服务器上VMs(运行状态的)

vimcmd vmsvc/getallvms |grep <vm name>  # 获取出vmid来,开机命令会用到

vim-cmd vmsvc/power.on <vmid>  # 执行开机

1.创建计划任务脚本:

vi /vmfs/volumes/datastore222/test.sh
注:之所以要在volume上创建脚本是因为如果直接在/etc等目录创建后重启就没了。

比如我的虚拟机名称是’Server-2016’,vmid是18,#是方便调试的注释,简单的脚本是这样:

别忘了最后要加上执行权限 chmod 744 test.sh

2.修改/etc/rc.local.d/local.sh实现重启也能自动添加计划任务:

定时任务请补充下crontab的知识。

如果感觉后台脚本一直检测也不太好的话,可以用另一个版本(前50分钟每5分钟检测一次,根据自己需求修改):

chmod 744 test.sh

然后修改/etc/rc.local.d/local.sh加入这一行/vmfs/volumes/datastore222/test.sh

补充:

1、控制虚拟机开关机

To power on a virtual machine from the command line:

List the inventory ID of the virtual machine with the command:

Note: The first column of the output shows the vmid.

Check the power state of the virtual machine with the command:

Power-on the virtual machine with the command:

关机就是把 power.on 改为 power.off 就可以了.

2、shell中特殊变量含义
$0:
执行脚本的名字
$*和$@:
将所有参数返回
$#:
参数的个数
$_:
代表上一个命令的最后一个参数
$$:
代表所在命令的PID
$!:
代表最后执行的后台命令的PID
$?:
代表上一个命令执行是否成功的标志,如果执行成功则$? 为0,否则不为0

参考前辈的文章:

esx 主机cli命令行简单介绍

ESXi 5.x 命令行操作

ESXI 5.5 添加计划任务的办法

 

 

转载请注明原作者,如果你觉得文章对你有帮助或启发,也可以来请我喝咖啡

点赞