Página 1 de 1

[Script] Atachar e Desatachar HD em uma VM do Xenserver

Enviado: 19 Out 2017 19:46
por marceloleaes
Imagem

Este script tem como finalidade automatizar a entrega de um HD USB ( Removable Storage ) dentro de uma VM do Xenserver para finalidade de backup e logo após término da rotina o mesmo é desatachado da VM.

Ele deve ser rodado em uma estação Windows com o XenCenter instalado pois depende do XE para executar.
Você pode utilizar o mesmo em conjunto de seu software de backup, eu mesmo utilizo o Syncovery e programo os comandos de After e Before já no mesmo JOB de cópia. Diversos softwares de backup tem este recurso, aproveite  ;)

Para descobrir o UUID do seu dispositivo de Storage Removível execute no Xen:

Código: Selecionar todos

xe sr-list name-label=Removable\ Storage

Para descobrir o UUID da VM execute no Xen:

Código: Selecionar todos

xe vm-list
Informe o UUID da VM e do Storage no script antes de executar

Para executar utilize:
     USBMOUNT.BAT ATACHAR    =  Entrega HD dentro da VM
     USBMOUNT.BAT DESATACHAR =  Remove HD da VM
Segue código fonte:

Código: Selecionar todos

@ECHO OFF
setlocal
REM ------------- Script para ATACHAR e DESATACHAR um Storage USB em uma VM do Xenserver -------------
REM ------------- Edite as linhas abaixo conforme necessidade e conforme seu ambiente -------------
REM ------------- Script retirado de Fórum Itbr - www.itbr.org - Por Marcelo Leães - [email protected] -------------

REM ------------- Credenciais do XenServer -------------
SET XE_USERNAME=root
SET XE_PASSWORD=senhadoroot
SET XE_SERVER=192.168.100.253
REM ------------- UUID do Storage Removível -------------
SET REMOVABLE_SR_UUID=UUID_STORAGE_REMOVIVEL
REM ------------- UUID da VM que receberá o Storage -------------
SET VM_UUID=UUID_DA_VM
REM ------------- Nome do dispositivo na VM (ex: hdb, hdc, hdd) -------------
set DEVICE_NAME=hdb
REM ------------- Caminho de instalação do XenCenter -------------
SET XE_CENTER_PATH=C:\Program files\Citrix\XenCenter\
REM ------------- Binário XE -------------
SET XE_EXEC="%XE_CENTER_PATH%\xe.exe" -s %XE_SERVER% -u %XE_USERNAME% -pw %XE_PASSWORD%
REM ------------- Arquivo Temporário -------------
SET TEMP_FILE=%TEMP%/xs-usbmount.tmp

REM ------------ NÃO EDITE MAIS NADA À PARTIR DESTA LINHA ----------------
IF "%1"=="ATACHAR" GOTO ATACHAR_STORAGE
IF "%1"=="DESATACHAR" GOTO DESATACHAR_STORAGE
echo MODO DE UTILIZAR: USBMOUNT.BAT ^<ATACHAR ^| DESATACHAR^>
GOTO END
:DESATACHAR_STORAGE
%XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE%
SET /P VBD_UUIDS= < %TEMP_FILE%
IF "%VBD_UUIDS%"=="" GOTO NAO_ATACHADO
%XE_EXEC% vbd-unplug uuid=%VBD_UUIDS%
%XE_EXEC% vbd-destroy uuid=%VBD_UUIDS%
echo.STORAGE DESATACHADO
GOTO END
:ATACHAR_STORAGE
%XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE%
SET /P VBD_UUIDS= < %TEMP_FILE%
IF NOT "%VBD_UUIDS%"=="" GOTO JA_ATACHADO
%XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=uuid --minimal > %TEMP_FILE%
SET /P VDI_UUID= < %TEMP_FILE%
%XE_EXEC% vbd-create vm-uuid=%VM_UUID% device=%DEVICE_NAME% vdi-uuid=%VDI_UUID% --minimal > %TEMP_FILE%
SET /P VBD_UUID= < %TEMP_FILE%
%XE_EXEC% vbd-plug uuid=%VBD_UUID%
echo.STORAGE UUID ATACHADO COMO: %VBD_UUID%
GOTO END
:JA_ATACHADO
echo.STORAGE JA SE ENCONTRA ATACHADO - ABORTANDO
GOTO END
:NAO_ATACHADO
echo.STORAGE NAO FOI ATACHADO - ABORTANDO
GOTO END
:END
endlocal 
Script pronto em anexo. Bom proveito ;)