Seite 1 von 1

VM`s zeitgesteuert sichern

Verfasst: 06.07.2006, 15:01
von Ronin
Hallo!

Ich habe zwei GSX Server unter Windows laufen.

Ich möchte mit einem batch die VM (später auch mehrere) herunterfahren, kopieren und wieder starten.

Ich hab mir folgendes herausgesucht:

vmware-cmd E:\Virtual_Machines\Windows\winXPPro.vmx stop trysoft

zum herunterfahren!


robocopy.exe "E:\Virtual_Machines\Windows" "F:\Test" /E /ZB /COPY:DATSOU /R:0 /W:0

zum kopieren!


vmware-cmd E:\Virtual_Machines\Windows\winXPPro.vmx start

zum neu starten!

Die Batchdateien (VM_Stop.bat,VM_Kopie.bat und VM_Start.bat) laufen einzeln auch gut.
Es gelingt mir leider nicht diese drei Zeilen in eine lauffähige Batchdatei zu bringen.

Es soll wohl daran liegen das der zweite Befehl schon ausgeführt wird bevor der erste beendet wurde.

Könnt ihr mir helfen ein lauffähiges script zu erstellen? Dieses soll später als task (Nachts) ausgeführt werden.

Danke!

Beste Grüße

Ronin



:)

Verfasst: 11.07.2006, 10:25
von Ronin
Was? Kann mir keiner helfen????

:roll:

Verfasst: 11.07.2006, 11:40
von ioman
Ok ich hätte da evtl. was.
VMWare legt eine .lck Datei an währen die VMWare noch läuft, also prüf einfach auf diese ab.
Bsp.:

Code: Alles auswählen

.... mache shutdown ....

:warten
if exist "[pfad]:\[Dateiname].vmx.lck" goto warten

.... jetzt kopieren ....
.... jetzt starten....


:warten ist ne Sprungmarke.
if exist überprfüt ob die lck datei noch existiert.
Wenn ja, dann springt er wieder in warten und überprüft, usw...
Wenn nein macht er im Batch weiter.

Gruß
ioman

Verfasst: 12.07.2006, 15:25
von Ronin
Hallo!

Erstmal DANKE! :)


Jetzt geht`s ans basteln...... :roll:

Verfasst: 13.07.2006, 06:44
von ioman
Kein Problem. Wenn Du noch Hilfe brauchst meldest Dich einfach dann *bastel* ich Dir so ein Script :grin:

Gruß
ioman

Verfasst: 17.07.2006, 14:31
von Ronin
Hallo!

Hier mein kleines Script:

vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft

:warten

if exist C:\Daten\VM\Linux.vmx.lck goto warten


robocopy.exe "C:\Daten\VM" "Y:\VM" /E /ZB /COPY:DATSOU /R:0 /W:0

vmware-cmd C:\Daten\VM\Linux.vmx\Linux.vmx start


Nun zu meinen Problemen:

1. Laüft die VM noch fährt der Befehl sie runter danach abbruch
2. Ist die VM runtergefahren und ich nehme die erste Zeile weg kopiert er sauber und fährt sie wieder hoch.

Ich möchte aber:

VM läuft - dann herunterfahren
VM kopieren
VM wieder hochfahren

oder

VM läuft nicht - egal
VM kopieren
VM wieder hochfahren


Danke!
:grin:

Beste Grüße

Ronin

Verfasst: 18.07.2006, 07:13
von ioman
Ohne das jetzt gerade ausprobieren zu können würde ich spontan folgendes schreiben :

Code: Alles auswählen

start vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft


Ohen Gewähr (sitz grad an nem anderen PC).

Gruß
ioman

Verfasst: 18.07.2006, 11:07
von Ronin
Danke!

Aber das Problem ist folgendes:

Wenn die VM nicht laüft bricht das Script ab ohne die nächsten Befehle abzuarbeiten.

Die Fehlermeldung sagt:

Ich kann den Befehl zum herunterfahren nicht ausführen VM laüft nicht.


Ideal wäre:

VM runterfahren - Ok oder VM ist runtergefahren egal dann

VM kopieren - Ok

VM- neustarten - OK



Man ich bin echt kein Programmierer :oops:

Beste Grüße

Ronin

Verfasst: 18.07.2006, 11:11
von ioman

Code: Alles auswählen

if exist C:\Daten\VM\Linux.vmx.lck goto shutdownvm
goto copyme

:shutdownvm
start vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft

:warten
if exist C:\Daten\VM\Linux.vmx.lck goto warten

:copyme
robocopy.exe "C:\Daten\VM" "Y:\VM" /E /ZB /COPY:DATSOU /R:0 /W:0

vmware-cmd C:\Daten\VM\Linux.vmx\Linux.vmx start


Hilft das evtl.?
Zuerst wird durch die .lck datei geprüft ob die vm rennt (könnte man noch eleganter lösen), wenn ja -> vmshutdown -> wenn nein gleich zum kopieren.

Gruß
ioman

Verfasst: 18.07.2006, 13:11
von Goldmond
ich arbeite zur Zeit am selben Problem

jedoch möchte ich nicht nur eine sondern 4 vms runter fahren und dann starten

z.b.
start vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft
start vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft
start vmware-cmd C:\Daten\VM\Linux.vmx stop trysoft


wenn jedoch die erste down ist springt er mir aus dem Batch und bricht ab.
Muss ich jetzt immer einen einzelne Batch anlegen und des alles verzetteln auf mehere Daten damit die richtig durchlaufen?

Muss doch möglich sein dass die Befehle hintereinander ausgeführt werden ohne abbruch

Verfasst: 18.07.2006, 13:25
von ioman
Goldmond an dieser Stelle würde ich eine Master-Shutdown-Kopier Batch schreiben (siehe mein Posting) aber den Pfad zur VMX Datei als Parameter übergeben.
Und dann eine 2 Batch die die Master Batch per Parameter aufruft.

Ansonsten könnt mer auch ne kleine kurze exe basteln, das ist eher mein Spezialgebiet und nicht so scripten :-)

Gruß
ioman

Verfasst: 18.07.2006, 13:33
von Goldmond
dein script ist mir klar.

Jedoch springt er bei mir gleich nach dem STOP Befehl aus der Batch
und kommt gar nicht mehr dazu weitere Befehle abzuarbeiten.

Irgend wie übergib der STOP Befehl auch ein exit mit was alle weiteren Stapeldateien abbricht. Verdammt seltsam

Verfasst: 18.07.2006, 13:48
von ioman
Hm das ist blöd :roll:
Hab grad keinen Server hier zum ausprobieren sondern nur die Workstation.
Naja wie auch schon gesagt mit dem Scripten kenn ich mich net so aus und bin auch nicht so wirklich ein Fan davon.
Also falls interesse besteht könnt man schon ne kleine Exe basteln (die dann per Script aufgerufen werden kann ;-) ).
Bräucht halt ein paar Anforderungen was das Teil können muss.

Gruß
ioman

Verfasst: 18.07.2006, 18:02
von al!ve
Ich hab bisher erst ein mal n ordentliches Windows-Batch-Backup-Script geschrieben, deshalb kann ich s dir nicht *genau* sagen, aber versuch mal mit "call", "cmd" und "start".

Verfasst: 19.07.2006, 08:12
von Goldmond
@al!ve wie meinst du das?

mit cmd call und start

soll ich das hintereinander schreiben?

Verfasst: 19.07.2006, 09:34
von Goldmond
Hi habs jetzt gepackt!! :idea:
klappt alles :!: :!: :!:

dachte ich lass euch mal drüber schauen :roll:
Bis auf den xcopy Teil hab ich alles fertig und funktioniert einwand frei.
zumindest für meine Bedürfnisse.

Code: Alles auswählen

@echo off

set rechner1=test1
set rechner2=test2
set rechner3=test3

set ziel=D:\VMWare\Production
set quelle=D:\VMWare\_Template

cd "C:\Programme\VMware\VMware VmPerl Scripting API"


::--------------------------------------------------------------------------------------------
::Es werden nun alle VM`s überprüft ob sie laufen und wenn nötig heruntergefahren

:check
if exist "%ziel%\%Rechner1%\Windows XP Professional.vmdk.lck" goto shutdownvm1
if exist "%ziel%\%Rechner2%\Windows XP Professional.vmdk.lck" goto shutdownvm2
if exist "%ziel%\%Rechner3%\Windows XP Professional.vmdk.lck" goto shutdownvm3

:shutdownvm1
call vmware-cmd "%ziel%\%Rechner1%\Windows XP Professional.vmx" stop trysoft
call vmware-cmd -s unregister "%ziel%\%rechner1%\Windows XP Professional.vmx"
goto check

:shutdownvm2
call vmware-cmd "%ziel%\%Rechner2%\Windows XP Professional.vmx" stop trysoft
call vmware-cmd -s unregister "%ziel%\%rechner2%\Windows XP Professional.vmx"
goto check

:shutdownvm3
call vmware-cmd "%ziel%\%Rechner3%\Windows XP Professional.vmx" stop trysoft
call vmware-cmd -s unregister "%ziel%\%rechner3%\Windows XP Professional.vmx"

:wait
if exist "%ziel%\%Rechner3%\Windows XP Professional.vmx.lck" goto wait

::--------------------------------------------------------------------------------------------
::Templates werden zurück kopiert, und vorhandene Ordner umbenannt

:xcopy


::--------------------------------------------------------------------------------------------
::Rechner werden nun wieder in das Inventory des VMWare-Servers gelesen und gestartet

:check2
if exist "%ziel%\%Rechner1%\Windows XP Professional.vmx" goto register1

:check3
if exist "%ziel%\%Rechner2%\Windows XP Professional.vmx" goto register2

:check4
if exist "%ziel%\%Rechner3%\Windows XP Professional.vmx" goto register3

:register1
call vmware-cmd -s register "%ziel%\%rechner1%\Windows XP Professional.vmx"
call vmware-cmd "%ziel%\%rechner1%\Windows XP Professional.vmx" start
goto check3

:register2
call vmware-cmd -s register "%ziel%\%rechner2%\Windows XP Professional.vmx"
call vmware-cmd "%ziel%\%rechner2%\Windows XP Professional.vmx" start
goto check4

:register3
call vmware-cmd -s register "%ziel%\%rechner3%\Windows XP Professional.vmx
call vmware-cmd "%ziel%\%rechner3%\Windows XP Professional.vmx" start

::--------------------------------------------------------------------------------------------

echo Alle VM`s laufen wieder!!
pause

Verfasst: 20.07.2006, 11:35
von Ronin
Hallo!

Hier noch mal "mein" ;) Script in der fertigen Version:

---------------------------

if exist C:\Daten\VM13-Semkat\semkat\Linux.vmdk.lck goto shutdown

goto copyme

:shutdown
call vmware-cmd C:\Daten\VM13-Semkat\semkat\Linux.vmx stop trysoft

:warten
if exist C:\Daten\VM13-Semkat\semkat\Linux.vmdk.lck goto warten

goto copyme

:copyme
call robocopy.exe "C:\Daten\VM13-Semkat\semkat" "Y:\Aktuell\Server\Semkat" /E /ZB /COPY:DATSOU /R:0 /W:0

call vmware-cmd C:\Daten\VM13-Semkat\semkat\Linux.vmx start

----------------------------------------------------

DANKE FÜR EURE HILFE!!!



:D