Oerb

  • Schrift vergrößern
  • Standard-Schriftgröße
  • Schriftgröße verkleinern

Vmware-Server2 Backupscript Linux

E-Mail Drucken PDF
Benutzerbewertung: / 2
SchwachPerfekt 

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 *************************************