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

ESXi的虚拟机开机自启动功能,如果虚拟机不可用的话是没法实现开机自启动的,比如主机的开机速度快而连的存储开机慢。

可以设定开机一段时间内检测状态并开机。

脚本结合crond定时执行,能做到虚拟机vms定时开机关机,后台定时检测虚拟机停止就自动开机,让虚拟机一直运行。

思路

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

2.如果虚拟机状态开机则不执行任何操作,退出;否则开机打开电源

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

具体操作

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

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

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

开机检测

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

通过vim-cmd vmsvc/getallvms获取虚拟机名称与编号。

比如我的虚拟机名称是’Server-2016’,vmid是18,#是方便调试的注释。

前50分钟每5分钟检测一次,检测到开机后退出,根据自己需求修改:

最后要加上执行权限 chmod 744 startVM.sh

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

加入这一行/vmfs/volumes/datastore222/startVM.sh

后台一直运行

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的知识。

 

补充:

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 添加计划任务的办法

 

 

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

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注