So ich schreibe gerade mal an einem Backupscript für den VMWARE-SERVER2
hier ist schonmal son grober umriss, der dem ein oder anderen die Möglichkeiten aufzeigt.
#!/bin/bash
# VMWARE-Backup für VMWARE-SERVER 2.0
# von Oerb, contact via
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
# Aug 2009
# *******************Parameter************************
# to define the vm-machin Dirctory
vmdir=/vmware/
vmbackupdir=/mnt/Backup/
# *******************END PARAMETER********************
# ********************Functions************************
# pause/suspend VM
function _vmsuspend {
/bin/bash vmware-vim-cmd vmsvc/power.suspend $1;
if [ $? = 255 ]; then
# !!!!!!!!!!!!!!! Der Errorhandler funktioniert so nicht !!!!!!!!!!!!!!!
echo "Error on Suspendcall '/bin/bash vmware-vim-cmd vmsvc/power.suspend' to Vmid " $1;
Errorstatus="yes"
else
echo "beginning to Suspend Virtualmachine with Vmid: " $1;
fi
}
# create snapshot VM
function _vmsnap {
/bin/bash vmware-vim-cmd vmsvc/snapshot.create $1
}
# delete all VM snapshots
function _vmsnapdel {
/bin/bash vmware-vim-cmd vmsvc/snapshot.removeall $1
}
# start VM
function _vmstart {
/bin/bash vmware-vim-cmd vmsvc/power.on $1;
if [ $? = 255 ]; then
# !!!!!!!!!!!!!!! Der Errorhandler funktioniert so nicht !!!!!!!!!!!!!!!
echo "Error on Startcall '/bin/bash vmware-vim-cmd vmsvc/power.on' to Vmid " $1;
Errorstatus="yes"
else
echo "beginning to start Virtualmachine with Vmid: " $1;
fi
}
# copy vm to destination
function _vmbackup {
echo "must be implemented/ _vmbackup not implemented"
}
# powerstatus
function _vmstatus {
statusms=`/bin/bash vmware-vim-cmd vmsvc/power.getstate $1 | sed -n '2,2p'`
proof=`/bin/bash vmware-vim-cmd vmsvc/power.getstate $1 | sed -n '2,2p' | cut -d " " -f 2`
}
# vm ID ermitteln
# ***********************END FUNCTIONS********************
# ****************** Program ***************************
# Liste der im VMWARESERVER enthaltenen virtuellen Maschinen
# erzeugen und nur die ID's in var1 abspeichern
var1=`/bin/bash vmware-vim-cmd vmsvc/getallvms | cut -d " " -f 1`
var2=""
Errorstatus="no"
# Virtuelle Maschinen die Laufen in Suspend versetzen
for i in $var1
do if ! [ $i = "Vmid" ]; then
_vmstatus $i;
echo "proof: " $proof
if [ $proof = "on" ]; then
# _vmsuspend $i;
var2=`echo $var2 " " $i`
echo $var2
fi;
fi;
echo "*********** Next *************"
done
# Prüfen, ob alle Maschinen den Suspendstatus erreicht haben
goms="go"
x=0
while [ $goms = "go" ]
do
goms=""
echo "Testing VM-STATUS: " $x
sleep 10
for i in $var2
do _vmstatus $i
if [ $proof = "on" ]; then
goms="go"
echo $i " is still running"
fi;
done
if [ $x = 1 ];then
goms="Error"
echo "Error - one or more virtual machines couldnt be send to Suspend mode"
Errorstatus="yes"
fi;
x=$[$x+1]
done
# Backup der angegebenen Verzeichnisse
if ! [ $goms = "Error" ]; then
echo "Beginning with Backup"
# tar -czvf $ZIEL/$DATUM/$DATUM.tar.gz $VM_BACKUP1
else
echo "Error in Suspending"
Errorstatus="yes"
fi
# die in Suspend versetzten maschinen wieder starten
for i in $var2
do _vmstatus $i
if ! [ $proof = "on" ]; then
if [ $statusms = "Suspended" ]; then
# _vmstart $i
echo "Starte Vmid: " $i
fi;
fi;
done
# Prüfen, ob alle Maschinen Wieder gestartet wurden
# natürlich nur die, welche vorher den Status Powerd on hatten
goms="go"
x=0
while [ $goms = "go" ]
do
goms=""
echo "Testing VM-STATUS: " $x
sleep 10
for i in $var2
do _vmstatus $i
if ! [ $proof = "on" ]; then
echo $proof " proof"
if [ $statusms = "Suspended" ]; then
goms="go"
echo $i " is still in Suspend Status"
fi;
fi;
done
if [ $x = 1 ];then
goms="Error"
echo "Error - one or more virtual machines couldn't be send to Power on Status"
Errorstatus="yes"
fi;
x=$[$x+1]
done
if [ $Errorstatus = "no" ]; then
echo " Backup ist Fertig und Maschinen wurden wieder ordentlich gestartet "
else
echo " One or more Errors in Backup "
fi;
# ************************** END PROGRAM *************************************
| < Zurück |
|---|






