VMware esxcli定时开启虚拟机、维护开机状态
ESXi的虚拟机开机自启动功能,如果虚拟机不可用的话是没法实现开机自启动的,比如主机的开机速度快而连的存储开机慢。
可以设定开机一段时间内检测状态并开机。
脚本结合crond定时执行,能做到虚拟机vms定时开机关机,后台定时检测虚拟机停止就自动开机,让虚拟机一直运行。
思路
1.检测虚拟机是否已开机
2.如果虚拟机状态开机则不执行任何操作,退出;否则开机打开电源
3.用crond定时执行检测脚本
具体操作
esxcli vm process list # 利用esxcli列出ESXi服务器上VMs(运行状态的)
vim–cmd 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分钟检测一次,检测到开机后退出,根据自己需求修改:
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 |
#!/bin/sh #后面的数字为虚拟机编号 for vm in 18 83 86 do { for i in {1..11} do #vim-cmd vmsvc/getallvms |grep <vm name> #vim-cmd vmsvc/power.getstate <vmid> #vim-cmd vmsvc/power.on <vmid> vim-cmd vmsvc/power.getstate $vm|grep 'Powered on' ret=$? if [ $ret == 0 ] then #echo $vm' is running,do nothing..' exit 0 else #echo $vm' is stoped,starting..' vim-cmd vmsvc/power.on $vm #echo 'Done.' fi sleep 5m; done }& done |
最后要加上执行权限 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,#是方便调试的注释,简单的脚本是这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/sh #vim-cmd vmsvc/getallvms |grep <vm name> #vim-cmd vmsvc/power.getstate <vmid> #vim-cmd vmsvc/power.on <vmid> esxcli vm process list|grep 'Server-2016' ret=$? if [ $ret == 0 ] then #echo 'Server-2016 is running,do nothing..' exit 0 else #echo 'Server-2016 is stoped,starting..' vim-cmd vmsvc/power.on 18 #echo 'Done.' fi |
别忘了最后要加上执行权限 chmod 744 test.sh
2.修改/etc/rc.local.d/local.sh实现重启也能自动添加计划任务:
1 2 3 4 5 |
chmod +w /var/spool/cron/crontabs/root /bin/kill $(cat /var/run/crond.pid) /bin/echo '*/10 * * * * /vmfs/volumes/datastore222/test.sh' >> /var/spool/cron/crontabs/root crond exit 0 |
定时任务请补充下crontab的知识。
补充:
1、控制虚拟机开关机
To power on a virtual machine from the command line:
List the inventory ID of the virtual machine with the command:
1 |
vim-cmd vmsvc/getallvms |grep <vm name> |
Note: The first column of the output shows the vmid.
Check the power state of the virtual machine with the command:
1 |
vim-cmd vmsvc/power.getstate <vmid> |
Power-on the virtual machine with the command:
1 |
vim-cmd vmsvc/power.on <vmid> |
关机就是把 power.on
改为 power.off
就可以了.
2、shell中特殊变量含义
$0:
执行脚本的名字
$*和$@:
将所有参数返回
$#:
参数的个数
$_:
代表上一个命令的最后一个参数
$$:
代表所在命令的PID
$!:
代表最后执行的后台命令的PID
$?:
代表上一个命令执行是否成功的标志,如果执行成功则$? 为0,否则不为0
转自https://zerlong.com/697.html
VMware esxcli定时开启虚拟机、维护开机状态相关推荐
- VMware esxcli定时开启虚拟机
VMware esxcli定时开启虚拟机 通过vim-cmd vmsvc/getallvms获取虚拟机名称与编号 添加定时任务 8.30 启动 vi /var/spool/cron/crontabs/ ...
- VMware 开启虚拟机就报错:发生错误,导致虚拟 CPU 进入关闭状态。如果虚拟机外部发生此错误,则可能已导致物理计算机重新启动。错误配置虚拟机、客户机操作系统中的错误或 VMware Workst
在虚拟机上安装了 Ubuntu 的镜像,但是开启虚拟机的时候一直报错. 原来的版本是 VMware15 Ubuntu 18.04 后来下了新版本的VMware16 ,我是直接下载安装的,没有删掉15版 ...
- 关于esxi6.5开启虚拟机提示文件被锁定,无法开机
我当前环境vcenter 已经宕机了没时间弄, 就在esxi主机上断开连接. 前两天帮群友解决一个问题,提示虚拟机无法开机. 提示:"无法锁定文件 无法打开磁盘"/vmfs/vol ...
- VMware ESXi 6.7服务器设置开机自动启动虚拟机
VMware ESXi 6.7服务器设置开机自动启动虚拟机,具体操作步骤如下 1.登陆到VMware ESXi 6.7 web 界面 2.导航器-->主机-->管理 将自动启动修改为 ...
- firewalld/iptables防火墙维护和状态查询命令(防火墙重载,区域操作命令,开启服务或端口,堵塞端口,iptables规则添加和删除)
文章目录 firewalld防火墙维护和状态查询命令 firewalld防火墙状态查询命令 firewalld防火墙重载配置命令 重新加载firewalld的配置 查询预定义信息命令 firewall ...
- 升级到win11后VMware不能开启虚拟机了
1.问题描述 本来是win10系统,VMware都配置好了,可以正常使用. 后来升级成win11了,VMware不能开启虚拟机,报错信息如下图: 2.解决过程 一般都是卸载 Hyper-v ,禁用 D ...
- VMware虚拟机修改开机密码(win系列)
VMware虚拟机修改开机密码 下载大白菜,并且将U盘格式化 首先先到大白菜去下载格式化U盘的软件点击此处进入官网 点击迅雷下载就好 下好以后解压,得到一个exe文件,一键安装. 最后安装好了打开得到 ...
- 您正在通过不兼容的虚拟化管理程序运行 VMware Workstation。禁用此虚拟化管理程序后才能开启虚拟机
场景描述: 在阿里云服务器的windowssever2012上无法安装oracleXE112数据库,因此想到在服务器上安装vmware然后再安装window7 32bit,然后再在虚拟机中安装orac ...
- VMware Workstation 开启虚拟机后蓝屏
VMware Workstation 开启虚拟机后主机蓝屏 注意:不用重装系统!不用重装系统!不用重装系统! 版本:VMware Workstation Pro 15.5.0 出问题时的虚拟机:ubu ...
最新文章
- 【运筹学】表上作业法 ( 示例 | 使用 “ 闭回路法 “ 计算检验数判定最优解 )
- java 静态线程_Java线程类静态本机void yield()方法(带示例)
- HTML placeholder
- 地震时,它可以救你一命!
- 利用if...else if....else循环语句编程
- win7动态壁纸_电脑桌面美化,高清动态壁纸
- vs C# 强制结束进程
- SkipList(跳跃表)详解
- 转:GRE_那些不讨人爱的4字母单词
- ArcGis 10.2运行提示“未授权”的解决方法
- MikTex+texworks插入数学公式示例
- 基于PHP+MySQL托管中心管理系统的设计与实现
- (三)展望Java技术的未来
- 晨枫U盘维护工具V2.0版(转)
- 彻底剖析ISAServer客户端及配置之一
- **图灵杯 J** 简单的变位词
- 自定义View 实现左右拖动脉象图
- 票务管理系统项目(part1)
- 693-详解ICMP 协议
- 老罗的「聊天宝」是不是死了 ?
热门文章
- 福建省计算机二级知识点,福建省计算机二级语言复习资料.doc
- i.MX RT开发笔记-03 | i.MX RT1062地址空间映射及启动方式
- 羊毛大军杀入币圈,有人月入过万,有人惨遭反薅,沦为韭菜
- 利用Python实现四则运算
- 【YOLOv5】yolov5训练中遇到的问题解决:BrokenPipeError: [Errno 32] Broken pipe
- 车站信息管理系统Android,客运站车无线交互系统
- ADB连接夜神模拟器的方法
- 【MATLAB库函数系列】resample(重采样函数)的C语言实现【姊妹篇2纯C语言实现】
- c语言微课ppt嵌套函数,C语言课程中循环嵌套的微课教学设计与思考.pdf
- 2021年春季ACM训练赛第5场