All pastes #825603 Raw Edit

Unbenannt

public text v1 · immutable
#825603 ·published 2007-12-20 18:16 UTC
rendered paste body
#!/bin/bash 
# Joern Eisenkraetzer, 2007-12-13 Version 1.0 
################################################################################################## 
#### Dupliziere ein vmx-Image in ein neu erstelltes Verzeichnis, nenne es um, registriere es  #### 
################################################################################################## 

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" 
clear 
echo " " 
echo "  ######################################################################" 
echo "  ###               Kopiere eine virtuelle Maschine                  ###" 
echo "  ######################################################################" 
echo " " 
#### 0. Loesche/verschiebe alle Snapshots -soweit vorhanden- manuell. 

#### --------------------------------- Verzeichnis/Image bezeichnen/pruefen --------- 

VERZEICHNISTEST=`ls |grep vmx|wc -l` 
if [ $VERZEICHNISTEST -eq 0 ]; then 
echo " " 
echo "  ++++++++++++++++++++++++++++++++++++" 
echo "  Abbruch, kein VM-Image-Verzeichnis !" 
echo "  ++++++++++++++++++++++++++++++++++++" 
echo " " 
echo " " 
echo "  Abbruch, Programm bitte aus dem Verzeichnis des VM-Image-Masters heraus starten!" 
echo " " 
sleep 2 
exit 1 
fi 

IMAGE_ALT=`ls -1 *.vmx|cut -d. -f1` 
W=n 

echo "  Starte das Programm im Verzeichnis der Master-VM" 
echo " " 
echo "  Das Script wurde im Verzeichnis `pwd` gestartete. " 
echo "  Die VM-Vorlage ist $IMAGE_ALT" 
echo " " 
SCHALTER=1 

while [ $SCHALTER -eq 1 ]; do 
read -p "  Namen der neuen Virtuelle Maschine vergeben: " IMAGE_NEU 
PRUEF=`echo $IMAGE_NEU|wc -w |tr -s " "|cut -d" " -f2` 
    
   case $PRUEF in 
    
   0) echo "  Bitte Dateinamen benennen!" 
      echo " "            ;; 
   1) echo "  VM-Maschinen- und Verzeichnisname ist $IMAGE_NEU" 
      CHARA=`echo $IMAGE_NEU|wc -m` 

      if [ $CHARA -lt 4 ]; then 
         echo " " 
         echo "  Bitte laengeren Namen waehlen!" 
         echo " " 
      else 
         if [ -e ../$IMAGE_NEU ]; then 
            echo " " 
            echo "  Dateiname existiert bereits, anderen waehlen!" 
            echo " " 
         else 
         echo "  OK..." 
         echo " " 
         SCHALTER=2 
         fi 
      fi            ;; 
   *) echo "  Bitte Dateiamen ohne Leerzeichen schreiben" 
      echo " "            ;; 
   esac 
    
done 

echo " " 
echo "  Es wird der VM.Master $IMAGE_ALT unter den Namen $IMAGE_NEU kopiert." 
read -p "  OK und weiter? <j/n>: " W 
W=$W\a 
echo " " 

#### ------------------------ PROGRAMM ------------------------------------ 

if [ $W = ja ]; then 

#### Neues Verzeichnisname = neuer Image-Name 
echo "  Erzeuge neues Verzeichnis $IMAGE_NEU" 
mkdir ../$IMAGE_NEU 

#### Kopieren von VMware-Images 
## 1. Kopieren der Dateien mit cp und vmkfstools in ein neues Verzeichnis. 

echo "  Kopiere *.vmx und *.vmxf-Dateien in das Verzeichnis $IMAGE_NEU" 
cp *.vmx* ../$IMAGE_NEU/ 

DATEIEN_1=`ls -1 ../$IMAGE_NEU/*.vm*` 
echo "  Kopierte Dateien sind: " 
echo -e $DATEIEN_1|tr " " "\n" 
echo " " 
echo "  Kopiere vmdk-Dateien mit dem Tool vmkfstool" 
echo " " 
for i in $(ls *.vmdk|grep -v flat.vmdk); do vmkfstools -i $i ../$IMAGE_NEU/$i; done 

DATEIEN_2=`ls -1 *.vm* ../$IMAGE_NEU/*.vm*` 
echo " " 
echo "  Dateien im Verzeichnis $IMAGE_NEU sind: " 
echo -e $DATEIEN_2|tr " " "\n" 
echo " " 
echo "  Wechseln in das neue Verzeichnis" 
cd ../$IMAGE_NEU 

HIER=`pwd` 
echo "  Das neue aktuelle Verzeichnis ist $HIER " 
echo "  Umbenennen der kopierten Dateien" 
rename $IMAGE_ALT $IMAGE_NEU *.* 

DATEIEN_3=`ls -1` 
echo " " 
echo "  Dateien im Verzeichnis $IMAGE_NEU sind: " 
echo -e $DATEIEN_3|tr " " "\n" 

#### 3. Anpassen der vmx-Konfiguratiosdatei 
sed -i "s/$IMAGE_ALT/$IMAGE_NEU/g" $HIER/$IMAGE_NEU.vmx 
sed -i "/^nvram/d" $IMAGE_NEU.vmx 
sed -i "/^uuid/d" $IMAGE_NEU.vmx 
sed -i "/^sched.swap/d" $IMAGE_NEU.vmx 
echo " " 
echo "  Anpassen der Festplattenbeschreibungsdatei" 
for i in $(ls *.vmdk|grep -v flat.vmdk); do sed -i "s/$IMAGE_ALT/$IMAGE_NEU/g" $i; done 

#### 5. Registrieren der virtuellen Maschine 
## Storage? 
STORAGE=`pwd|cut -d/ -f4` 
echo "  Es wird Storage $STORAGE benutzt" 
echo " " 
STORAGE_PFAD=`pwd|cut -d/ -f1-4` 
STORAGE_LINK=`ls -l $STORAGE_PFAD|tr ">" "#"|cut -d# -f2|cut -d" " -f2` 
echo "  Die Storage-Entsprechung lautet $STORAGE_LINK" 
vmware-cmd -s register /vmfs/volumes/$STORAGE_LINK/$IMAGE_NEU/$IMAGE_NEU.vmx 

echo "  fertig" 
sleep 3 

else 
echo "  Tschuess" 
sleep 2 
fi 
exit