Die Foren-SW läuft ohne erkennbare Probleme. Sollte doch etwas nicht funktionieren, bitte gerne hier jederzeit melden und wir kümmern uns zeitnah darum. Danke!

Detaillierte Infos zu Syntax für Skripte mit vmrun ?

Hilfe bei Problemen mit der Installation oder Benutzung des VMware Server 2.

Moderatoren: irix, Dayworker

Member
Beiträge: 40
Registriert: 28.07.2008, 09:34

Detaillierte Infos zu Syntax für Skripte mit vmrun ?

Beitragvon TSCH » 14.10.2008, 07:41

Guten Morgen,

bisher habe ich mit VMware Server 1.x immer zeitgesteuert per Skript (Windows-Host) meine VMs gesichert.
Zur Fehlervermeidung habe ich ein paar Abfragen eingebaut, die ich nun mit VMware Server 2.x leider (noch) nicht hinbekomme.

Zur allgemeinen Belustigung hier mal eine exemplarische Batch-Datei für 1.x:

@echo off
set vmdir=D:\VM
set vmname=WSUS
set vmxname=wsus.vmx
set copyLW=\\192.168.1.1\vmw
if not exist %vmdir%\%vmname%\%vmxname% goto errhost
call vmware-cmd -q "%vmdir%\%vmname%\%vmxname%" getstate | FIND "on" > NUL
if errorlevel=1 goto vmoff
call vmware-cmd -q "%vmdir%\%vmname%\%vmxname%" stop trysoft
if errorlevel=1 goto vmnosuspend
ping -n 30 localhost > nul
:: um Zeit für runterfahren zu gewinnen
robocopy "%vmdir%\%vmname%" "%copyLW%\VM\%vmname%" /MIR /NP /ZB /R:5 /TEE /Log:"%copyLW%\LOG\rclog-%vmname%.txt"

if errorlevel 16 (echo !!! SCHWERER FEHLER !!! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)
if errorlevel 8 (echo !! Fehlerhafte Kopien !! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)
:: blat schickt eine Mail an mich

call vmware-cmd -q "%vmdir%\%vmname%\%vmxname%" start -U user -P kw
goto end
:vmnosuspend
echo Probleme beim SUSPEND > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end
:vmoff
echo VM war ausgeschaltet > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end
:errhost
echo VMX-Datei nicht gefunden > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
:end


Für 2.x sieht die Batch so aus:

@echo off
set vmdir=[standard]
set vmname=_PROD\WSUS
set vmxname=wsus.vmx
set copyLW=\\192.168.1.1\vmw
if not exist d:\vm\%vmname%\%vmxname% goto errhost
call vmrun -T server -u user -p kw -h https://127.0.0.1:8333/sdk stop "%vmdir% %vmname%\%vmxname%" -soft
ping -n 60 localhost > nul
robocopy "d:\vm\%vmname%" "%copyLW%\VM\%vmname%" /MIR /NP /ZB /R:5 /TEE /Log:"%copyLW%\LOG\rclog-WSUS.txt"

if errorlevel 16 (echo !!! SCHWERER FEHLER !!! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)
if errorlevel 8 (echo !! Fehlerhafte Kopien !! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)


call vmrun -T server -u user -p kw -h https://127.0.0.1:8333/sdk start "%vmdir% %vmname%\%vmxname%"
goto end
:vmoff
echo VM war ausgeschaltet > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end
:errhost
echo VMX-Datei nicht gefunden > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
:end


Leider konnte ich hier bisher keine Abfrage einbauen, die vor dem Backup sicherstellt, daß die VM überhaupt gestartet war. Falls nämlich dies nicht der Fall ist, soll (wie bei 1.x) unbedingt abgebrochen werden.
Wie kann ich bei vmrun die Errorcodes abfragen für eine nicht gestartete VM?

Danke schonmal für Eure Hilfe.

Mit der API möchte ich eigentlich nicht anfangen zu programmieren. Bin bisher immer mit den Skripten gut zurechtgekommen ;-))


lG

TSCH

Member
Beiträge: 1
Registriert: 22.10.2008, 17:03

Beitragvon boggy » 22.10.2008, 17:06

Ich hatte das bei VMwareServer 1.x schon über die .LCK-File(s) feststellen lassen.
Wenn vorhanden = eingeschaltet.
Bin auch gerade am 2.0er dran ;)

g.
boggy

Member
Beiträge: 34
Registriert: 02.03.2006, 22:48

Nettes Skript...

Beitragvon Tarmerlan » 25.10.2008, 12:12

Ich habe mir interessiert mal Dein Skript angeschaut und ein paar Fragen:


@echo off
set vmdir=[standard]
Wozu definierst Du den Datastore, wenn er hinterher nicht verwendet wird?
set vmname=_PROD\WSUS
set vmxname=wsus.vmx
Wozu unterteilst Du die VMX-Datei und einen individuellen Ordnernamen? Könnte man doch beides in eine Variable legen
set copyLW=\\192.168.1.1\vmw
Abfrage ob die VM existiert Hier könnte doch am Anfang doch die Variabele für das Datastore gesetzt werden ??????????????????????
if not exist d:\vm\%vmname%\%vmxname% goto errhost
call vmrun -T server -u user -p kw -h https://127.0.0.1:8333/sdk stop "%vmdir% %vmname%\%vmxname%" -soft
Was sollen die 60x Anpingen des localhost bringen?
ping -n 60 localhost > nul
Erstellen einer Sicherungskopie der VM in einen Ordner mit Namen der VM. Danach Erstellung eines Logfile - aber da steht doch nix drin
robocopy "d:\vm\%vmname%" "%copyLW%\VM\%vmname%" /MIR /NP /ZB /R:5 /TEE /Log:"%copyLW%\LOG\rclog-WSUS.txt"
Was sind das für Fehlercodes?? Woher hast die? Würde mich wirklich interessieren.
if errorlevel 16 (echo !!! SCHWERER FEHLER !!! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)
if errorlevel 8 (echo !! Fehlerhafte Kopien !! > elv.txt
blat elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end)
call vmrun -T server -u user -p kw -h https://127.0.0.1:8333/sdk start "%vmdir% %vmname%\%vmxname%"
goto end
:vmoff
echo VM war ausgeschaltet > d:\elv.txt
blat d:\elv.txt -to tsch@sagichnich.de -subject %vmname%
goto end
:errhost


Member
Beiträge: 208
Registriert: 01.06.2007, 11:40

Re: Detaillierte Infos zu Syntax für Skripte mit vmrun ?

Beitragvon diwoma » 27.10.2008, 09:42

Hi,

TSCH hat geschrieben:call vmrun -T server -u user -p kw -h https://127.0.0.1:8333/sdk stop "%vmdir% %vmname%\%vmxname%" -soft


Ist das nicht eine harte Landung des Client ?
Wenn i ch das einsetze ist der Client sofort inaktiv, was darauf deutet, dass er einfach abgeschaltet.

Kann man hier was einsetzen, dass er zumindest in den Suspend-Mode geht?

Member
Beiträge: 40
Registriert: 28.07.2008, 09:34

Beitragvon TSCH » 26.03.2010, 08:49

Hallo,

nachdem ich bei der Suche nach der soft Option meinen eigenen Beitrag wiedergefunden habe ;-) hier nun eine Batch, welche die VM behutsam (stop soft) herunterfährt und ansonsten noch ein paar andere Modifikationen erfahren hat:


*******************************************************************************************

@echo off

:: universelle Batch für VM-Robocopy-Backups unter VMware Server 2.x
:: Stand 2010-03-16
:: Definition der Variablen
:: Übergabe von nvmdir, nvm, nvmx und sichnr
:: Beispiel: vmbackup _PROD A400S600 A400S600 0
:: !!! Groß-/Kleinschreibung beachten bei Datastore und VMX-Datei !!! => generell in Großbuchstaben

set USER=user-login
set PASS=user-kw

set VMLW=D:
::Datastore liegt auf D:\VM
set NVMDIR=%1
::Name des übergeordneten VM-Unterverzeichnisses (_PROD oder _TEST)
set NVM=%2
::Name des VM-Unterverzeichnisses
set NVMX=%3
::Name der VMX-Datei (ohne Suffix .VMX)
set SICHNR=%4

set DATASTORE=[VM] %NVMDIR%
::Definition des Datastore

set copyLW=\\BULW\vm-backup
::Mein Backup-LW

:: Sicherheitschecks

:: Ist der Backup-Server überhaupt erreichbar ?
ping BULW
if errorlevel=1 goto backupoff

:: VMX-Datei vorhanden ?
if not exist %VMLW%\VM\%NVMDIR%\%NVM%\%NVMX%.VMX goto errhost


:: VM gestartet ?
if not exist %VMLW%\VM\%NVMDIR%\%NVM%\*.vmem goto vmoff

vmrun -T server -h https://127.0.0.1:8333/sdk -u %USER% -p %PASS% stop "%DATASTORE%/%NVM%/%NVMX%.VMX" soft

ping -n 60 localhost > nul
::Etwas Zeit zum herunterfahren gewinnen ;-)

robocopy "%VMLW%\VM\%NVMDIR%\%NVM%" "%COPYLW%\VM2\%NVMDIR%\%NVM%-%SICHNR%" /MIR /NP /ZB /R:5 /TEE /Log:"%COPYLW%\LOG\VM2_%NVM%-%SICHNR%.txt"

if errorlevel 16 (echo !!! SCHWERER FEHLER !!! > elv.txt
blat elv.txt -to vmadmin@mydomain.de -subject %NVM%
goto end)
if errorlevel 8 (echo !! Fehlerhafte Kopien !! > elv.txt
blat elv.txt -to vmadmin@mydomain.de -subject %NVM%
goto end)


call vmrun -T server -u %USER% -p %PASS% -h https://127.0.0.1:8333/sdk start "%DATASTORE%/%NVM%/%NVMX%.VMX"
goto end

:vmoff
echo VM war ausgeschaltet > d:\elv.txt
blat d:\elv.txt -to vmadmin@mydomain.de -subject %NVM%
goto end

:backupoff
echo Backup-Medium nicht erreichbar > d:\elv.txt
blat d:\elv.txt -to vmadmin@mydomain.de -subject "%NVM% Backup-LW"
goto end

:errhost
echo VMX-Datei nicht gefunden > d:\elv.txt
blat d:\elv.txt -to vmadmin@mydomain.de -subject %NVM%

:end

*******************************************************************************************


Mein Fehler war ein "-" vor dem soft-Parameter.


Anregungen sind gerne willkommen.


Zurück zu „VMserver 2“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste