VMware提供了命令行管理虚拟机的接口,即vmware-cmd,通过这个命令行接口可以完成对虚拟机的诸多操作,比如重启、关闭、开机、配置快照等等。配合Plink.exe这个工具可以实现远程执行Vmware-cmd,plink相当于Putty的命令行模式。这样通过制作脚本,实现在远程批量操作虚拟机了。
文末有我使用的bat文件,配合plink和wol.exe(不需要putty)即可实现ESX的开、关机,其上虚拟机的开、关机。
一、准备工作
1、下载PuTTY:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
下载PuTTY和plink,将两个文件放入同一文件夹内。
2、双击Putty,“Host Name”处填入ESXSrver主机的名称或IP地址;“Saved Sessions”随便填入一个连接名称,点击“Save”,保存链接:
3、重新打开PUTTY,双击刚才保存的VmServer06的链接,试验能否正确链接到ESXServer主机:
二、试验关闭/开启虚拟机
1、远程主机上,打开CMD命令行,定位到存放putty和plink的文件夹,输入如下命令:
plink.exe -load “VmServer06″ -ssh -batch -l user -pw yourpass -m stop.txt
提示:“VmServer06”为前面保存的PUTTY的链接名称,“User”用来连接ESXServer的用户名,“Yourpass”SSH连接ESXServer的密码,“Stopt.txt”存放Vmware-cmd执行命令的文件
2、关机脚本“stop.txt”:
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer02.vmx stop
提示:/vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer02.vmx 表示虚拟机存放镜像的路径,将stop.txt存放到与putty相同的路径。
3、运行步骤1中的命令,关闭Vmserver02的虚拟机:
说明:显示 stop<> =1,成功关闭虚拟机VmServer02
4、同理试验开启虚拟机,制作开机脚本“start.txt”,命令如下:
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmGhost01/VmGhost01.vmx start exit
保存成start.txt。
5、CMD下输入命令:
plink.exe -load “VmServer06″ -ssh -batch -l user -pw yourpass -m start.txt
6、结果显示成功启动虚拟机:
三、制作开机/关机脚本。
1、按照试验的方法,将ESXServer上的虚拟机添加到Start.txt和Stop.txt中。
“start.txt”
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer02.vmx start
vmware-cmd /vmfs/volumes/VmServer06\:storage1//VmGhost01/VmGhost01.vmx start
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer04.vmx start
exit
“stop.txt”:
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer02.vmx stop
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmGhost01/VmGhost01.vmx stop
vmware-cmd /vmfs/volumes/VmServer06\:storage1/VmServer02/VmServer04.vmx stop
exit
2、制作plink命令的脚本
开机脚本start.bat
@echo off plink.exe -load “VmServer06″ -ssh -batch -l user -pw yourpass -m start.txt
关机脚本
@echo off echo 确认要关闭虚拟机吗?确认按任意键继续;退出点击关闭 pause plink.exe -load “VmServer06″ -ssh -batch -l user -pw yourpass -m stop.txt
现在在任意一台XP客户端双击运行脚本,就可以远程批量开启或关闭虚拟机了。
另一种方法:
先补充一下常用的命令:
vmware-cmd –l ##查看长长的.vmx位置 vmware-cmd vmx-path start <poweron_mode> ##在这,输入vmx-path时,常常会让人感到愤怒,或者是vm很多很多时,眼花撩乱,简直是@#$%&^%$#$%
看下如何用“vmware-vim-cmd”实现开机效果:
vmware-vim-cmd vmsvc/getallvms ##获取所有VM的信息,包括我们需要使用的Vmid,值得一赞的是,这里的输出结果太美观了(Putty窗口太窄,换行显示就不漂亮了) vmware-vim-cmd vmsvc/power.on vmid ##OK,启动虚拟机(注意替换“vmid”)!
另外,使用这种方法去修改网络以及其他配置时,也是更加的有效以及方便的。不过值得注意的时,修改网络配置后,一般需要使用 刷新命令 [refresh], 否则修改后,你getinfo时,就会发现,怎么好像没配置成功,这确实有些让人困惑,但是refresh后,一切都好了!
vmware-vim-cmd:
[root@esx80 root]# vmware-vim-cmd Commands available under /: hostsvc/ proxysvc/ vimsvc/ help internalsvc/ solo/ vmsvc/
介绍其中几项:
hostsvc/ 包含的是一些关于host设置的命令,类似网络,硬件信息,存储,防火墙,各种服务等等……
vmsvc/ 则包含的是对Virtual Machine的一些常规设置,类似查看状态,启动,关闭,快照管理,添加/扩展磁盘,等等……
vimsvc/ 包含的是一些权限,license等等更多VI Client以及VC中一些常规的设置
这里附上一个我正在使用的bat脚本:
用法:
esx on #远程打开ESX主机(需要一个wol.exe工具来发送“Wake-up packet”) esx off #远程关闭ESX主机 esx ste #查看ESX主机的状态 esx l #查看ESX上的虚拟主机列表(列表中有相应的vmid和虚似机的名称)(L的小写) esx 80 on #远程打开ESX上vmid为80的虚拟主机 esx 80 off #远程关闭ESX上vmid为80的虚拟主机 esx 80 ste #查看ESX上vmid为80的虚拟主机的状态 esx ? #查看帮助
最后:1、记得让这个脚本找得到plink和wol,你可修改环境变量,或者指定为“d:\plink.exe”。
2、如果提示是否保存密钥,输入“y”或者“n”都可以,但是输入“y”的话,再次执行将不会再出现这个提示,密钥保存在“HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys”。
Esx.bat的代码:
@rem =================================================== @rem 说明: @rem 用于启动或关闭ESX上的虚似主机 @rem 用法请使用命令“esx ?”查看。 @rem 【注意】需要配合plink.exe和wol.exe才能正常工作。 @rem =================================================== @echo off ::=============配置================ set sshHost=192.168.0.250 set sshUser=root set sshPwd=upall ::================================ if '%1'=='?' goto howto if /i '%1'=='on' goto PowerOnEsx if /i '%1'=='off' goto PowerOffEsx if /i '%1'=='ste' goto statusEsx if /i '%1'=='l' goto allVms if '%1'=='' (set vmid=80) else set vmid=%1 if '%2'=='' (set ste=on) else set ste=%2 if /i '%ste%'=='ste' set ste=getstate plink.exe -ssh -l %sshUser% -pw %sshPwd% %sshHost% vmware-vim-cmd vmsvc/power.%ste% %vmid% goto end :PowerOnEsx wol 0002a5ae72bb rem wol后边的是ESX的网卡地址 goto end :PowerOffEsx plink.exe -ssh -l %sshUser% -pw %sshPwd% %sshHost% shutdown -h now goto end :statusEsx plink.exe -ssh -l %sshUser% -pw %sshPwd% %sshHost% service mgmt-vmware status goto end :allVms plink.exe -ssh -l %sshUser% -pw %sshPwd% %sshHost% vmware-vim-cmd vmsvc/getallvms goto end :howto echo 说明:通过plink控制ESX上虚拟机的on和off。 echo 没有vmid参数,on和off将作用于ESX本身, echo l参数(“L”的小写)可以列出所有虚拟机。 echo 用法:esx [vmid = 80] [on^|off^|ste = on] [l] echo 例子:esx 80 on echo 命令:plink.exe -ssh -l sshUser -pw sshPwd sshHostIP vmware-vim-cmd vmsvc/power.on 80 :end
<完>