首页 » 工作 » 正文

远程启动或关闭ESX Server上的虚拟机

发布者:站点默认
2011/04/26 浏览数(1,683) 分类:工作 远程启动或关闭ESX Server上的虚拟机已关闭评论

  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 

<完>

点击返回顶部
  1. 留言
  2. 联系方式