mirror of https://github.com/lework/script
lework
5 years ago
1 changed files with 319 additions and 0 deletions
@ -0,0 +1,319 @@ |
|||||||
|
@echo off |
||||||
|
Setlocal enabledelayedexpansion |
||||||
|
::CODER BY lework |
||||||
|
|
||||||
|
title VMware Workstation 虚拟机批量管理 |
||||||
|
|
||||||
|
IF EXIST "%PROGRAMFILES%\VMWare\VMWare Workstation\vmrun.exe" SET VMwarePath=%PROGRAMFILES%\VMWare\VMWare Workstation |
||||||
|
IF EXIST "%PROGRAMFILES(X86)%\VMWare\VMWare Workstation\vmrun.exe" SET VMwarePath=%PROGRAMFILES(X86)%\VMWare\VMWare Workstation |
||||||
|
IF EXIST "%PROGRAMFILES%\VMware\VMware VIX\vmrun.exe" SET VMwarePath=%PROGRAMFILES%\VMware\VMware VIX |
||||||
|
IF EXIST "%PROGRAMFILES(X86)%\VMware\VMware VIX\vmrun.exe" SET VMRUN=%PROGRAMFILES(X86)%\VMware\VMware VIX |
||||||
|
|
||||||
|
::变量设置 |
||||||
|
::set VMwarePath="C:\Program Files (x86)\VMware\VMware Workstation" |
||||||
|
set VMpath="D:\Virtual Machines" |
||||||
|
set VMname=CentOS_7.4_x64_node |
||||||
|
set VMSnapshot=init |
||||||
|
set VMcount=5 |
||||||
|
set VMowa="D:\vmware owa\CentOS_7.4_x64.ova" |
||||||
|
set VMuser=root |
||||||
|
set VMpass=123456 |
||||||
|
set VMipStart=10 |
||||||
|
set VMnetwork=192.168.77 |
||||||
|
|
||||||
|
|
||||||
|
:init |
||||||
|
cls |
||||||
|
echo. |
||||||
|
echo. VMware Workstation 虚拟机批量管理 |
||||||
|
echo. |
||||||
|
echo ============================== |
||||||
|
echo. |
||||||
|
echo. 输入 0 一键初始化(包含1,2,3步骤) |
||||||
|
echo. 输入 1 创建虚拟机 |
||||||
|
echo. 输入 2 设置ip地址 |
||||||
|
echo. 输入 3 创建快照 |
||||||
|
echo. 输入 4 查看启动的虚拟机 |
||||||
|
echo. 输入 5 启动虚拟机 |
||||||
|
echo. 输入 6 关闭虚拟机 |
||||||
|
echo. 输入 7 重启虚拟机 |
||||||
|
echo. 输入 8 恢复虚拟机快照 |
||||||
|
echo. 输入 9 删除虚拟机 |
||||||
|
echo. 输入 10 挂起虚拟机 |
||||||
|
echo. 输入 11 暂停虚拟机 |
||||||
|
echo. 输入 12 恢复虚拟机 |
||||||
|
echo. 输入 q 退出 |
||||||
|
echo. |
||||||
|
echo ============================== |
||||||
|
echo. |
||||||
|
|
||||||
|
cd /d "%VMwarePath%" |
||||||
|
|
||||||
|
set "input=" |
||||||
|
set /p input=请输入您的选择: |
||||||
|
echo. |
||||||
|
if "%input%"=="q" goto exit |
||||||
|
if "%input%"=="0" goto oneKey |
||||||
|
if "%input%"=="1" goto create |
||||||
|
if "%input%"=="2" goto setip |
||||||
|
if "%input%"=="3" goto snapshot |
||||||
|
if "%input%"=="4" goto list |
||||||
|
if "%input%"=="5" goto start |
||||||
|
if "%input%"=="6" goto stop |
||||||
|
if "%input%"=="7" goto restart |
||||||
|
if "%input%"=="8" goto revertToSnapshot |
||||||
|
if "%input%"=="9" goto delete |
||||||
|
if "%input%"=="10" goto suspend |
||||||
|
if "%input%"=="11" goto pausevm |
||||||
|
if "%input%"=="12" goto unpausevm |
||||||
|
|
||||||
|
:wait |
||||||
|
echo. |
||||||
|
echo 执行完毕, 等待中... |
||||||
|
for /l %%a in (1,1,5) do ( |
||||||
|
ping /n 2 127.1>nul |
||||||
|
set /p a=^><nul |
||||||
|
) |
||||||
|
|
||||||
|
goto init |
||||||
|
|
||||||
|
:oneKey |
||||||
|
echo [创建虚拟机...] |
||||||
|
set "cname=" |
||||||
|
set "ccount=" |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
set /p VMSnapshot=请输入快照名称(默认:%VMSnapshot%): |
||||||
|
set /p VMuser=请输入用户名(默认:%VMuser%): |
||||||
|
set /p VMpass=请输入密码(默认:%VMpass%): |
||||||
|
set /p VMipStart=请输入ip开始地址(默认:%VMipStart%): |
||||||
|
|
||||||
|
echo. |
||||||
|
echo ============= |
||||||
|
echo. |
||||||
|
echo. 虚拟机模板: !VMowa! |
||||||
|
echo. 虚拟机存放目录: !VMpath! |
||||||
|
echo. 虚拟机名称: !VMname! |
||||||
|
echo. 虚拟机数量: !VMcount! |
||||||
|
echo. 虚拟机初始快照名称: !VMSnapshot! |
||||||
|
echo. 虚拟机用户名: !VMuser! |
||||||
|
echo. 虚拟机密码: !VMpass! |
||||||
|
echo. 虚拟机网段: !VMnetwork! |
||||||
|
echo. 虚拟机ip开始地址: !VMipStart! |
||||||
|
echo. |
||||||
|
echo ============= |
||||||
|
|
||||||
|
for /l %%a in (1,1,!VMcount!) do ( |
||||||
|
echo. |
||||||
|
echo 创建虚拟机: !VMname!%%a |
||||||
|
cd OVFTool |
||||||
|
ovftool --name=!VMname!%%a !VMowa! !VMpath! |
||||||
|
cd .. |
||||||
|
echo 启动虚拟机: !VMname!%%a |
||||||
|
vmrun -T ws start !VMpath!\!VMname!%%a\!VMname!%%a.vmx |
||||||
|
) |
||||||
|
|
||||||
|
echo 设置ip: |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
set /a num=%VMipStart%+%%a-1 |
||||||
|
set ip=!VMnetwork!.!num! |
||||||
|
echo !name!:!ip! |
||||||
|
vmrun -T ws -gu !VMuser! -gp !VMpass! runProgramInGuest !VMpath!\!name!\!name!.vmx /bin/bash -c "sudo sed -i 's/^IPADDR=.*/IPADDR=!ip!/g' /etc/sysconfig/network-scripts/ifcfg-ens33;/etc/init.d/network restart || sudo sed -i 's/^address.*$/address !ip!/g' /etc/network/interfaces;/etc/init.d/network restart" nogui |
||||||
|
) |
||||||
|
|
||||||
|
echo 创建快照: |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws stop !VMpath!\!name!\!name!.vmx nogui |
||||||
|
vmrun -T ws snapshot !VMpath!\!name!\!name!.vmx !VMSnapshot! nogui |
||||||
|
vmrun -T ws start !VMpath!\!VMname!%%a\!VMname!%%a.vmx nogui |
||||||
|
) |
||||||
|
|
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:start |
||||||
|
echo [启动虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws start !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:stop |
||||||
|
echo [关闭虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws stop !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:restart |
||||||
|
echo [重启虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws stop !VMpath!\!name!\!name!.vmx nogui |
||||||
|
vmrun -T ws start !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:suspend |
||||||
|
echo [挂起虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws suspend !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:pausevm |
||||||
|
echo [暂停虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws pause !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:unpausevm |
||||||
|
echo [恢复虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws unpause !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:revertToSnapshot |
||||||
|
echo [恢复虚拟机快照...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
set /p VMSnapshot=请输入快照名称(默认:%VMSnapshot%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws revertToSnapshot !VMpath!\!name!\!name!.vmx !VMSnapshot! nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
:list |
||||||
|
echo [虚拟机启动列表...] |
||||||
|
vmrun list |
||||||
|
echo. |
||||||
|
pause |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:create |
||||||
|
echo [创建虚拟机...] |
||||||
|
set "cname=" |
||||||
|
set "ccount=" |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
|
||||||
|
echo. |
||||||
|
echo ============= |
||||||
|
echo. |
||||||
|
echo. 虚拟机模板: !VMowa! |
||||||
|
echo. 虚拟机存放目录: !VMpath! |
||||||
|
echo. 虚拟机名称: !VMname! |
||||||
|
echo. 虚拟机数量: !VMcount! |
||||||
|
echo. |
||||||
|
echo ============= |
||||||
|
|
||||||
|
for /l %%a in (1,1,!VMcount!) do ( |
||||||
|
echo. |
||||||
|
echo 创建虚拟机: !VMname!%%a |
||||||
|
cd OVFTool |
||||||
|
ovftool --name=!VMname!%%a !VMowa! !VMpath! |
||||||
|
cd .. |
||||||
|
echo 启动虚拟机: !VMname!%%a |
||||||
|
vmrun -T ws start !VMpath!\!VMname!%%a\!VMname!%%a.vmx |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:delete |
||||||
|
echo [删除虚拟机...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
set is=no |
||||||
|
set /p is=确定删除么?(yes/no, 默认:%is%): |
||||||
|
|
||||||
|
if "%is%" NEQ "yes" ( |
||||||
|
echo 已取消 |
||||||
|
goto wait |
||||||
|
) |
||||||
|
|
||||||
|
echo 关闭vmware |
||||||
|
taskkill /f /t /im vmware.exe |
||||||
|
|
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo 删除: !name! |
||||||
|
vmrun -T ws stop !VMpath!\!name!\!name!.vmx nogui |
||||||
|
vmrun deleteVM !VMpath!\!name!\!name!.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:snapshot |
||||||
|
echo [创建快照...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
set /p VMSnapshot=请输入快照名称(默认:%VMSnapshot%): |
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
echo !name! |
||||||
|
vmrun -T ws stop !VMpath!\!name!\!name!.vmx nogui |
||||||
|
vmrun -T ws snapshot !VMpath!\!name!\!name!.vmx !VMSnapshot! nogui |
||||||
|
vmrun -T ws start !VMpath!\!VMname!%%a\!VMname!%%a.vmx nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:setip |
||||||
|
echo [设置ip地址...] |
||||||
|
set /p VMname=请输入虚拟机名称(默认:%VMname%): |
||||||
|
set /p VMcount=请输入虚拟机数量(默认:%VMcount%): |
||||||
|
set /p VMuser=请输入用户名(默认:%VMuser%): |
||||||
|
set /p VMpass=请输入密码(默认:%VMpass%): |
||||||
|
set /p VMipStart=请输入ip开始地址(默认:%VMipStart%): |
||||||
|
|
||||||
|
for /l %%a in (1,1,%VMcount%) do ( |
||||||
|
set name=!VMname!%%a |
||||||
|
set /a num=%VMipStart%+%%a-1 |
||||||
|
set ip=!VMnetwork!.!num! |
||||||
|
echo !name!:!ip! |
||||||
|
vmrun -T ws -gu !VMuser! -gp !VMpass! runProgramInGuest !VMpath!\!name!\!name!.vmx /bin/bash -c "sudo sed -i 's/^IPADDR=.*/IPADDR=!ip!/g' /etc/sysconfig/network-scripts/ifcfg-ens33;/etc/init.d/network restart || sudo sed -i 's/^address.*$/address !ip!/g' /etc/network/interfaces;/etc/init.d/network restart" nogui |
||||||
|
) |
||||||
|
goto wait |
||||||
|
|
||||||
|
|
||||||
|
:exit |
||||||
|
echo 退出... |
||||||
|
ping /n 5 127.1>nul |
||||||
|
exit |
Loading…
Reference in new issue