#!/bin/bash usage() { cat << EEOF Usage: makevm [clonevm] EEOF } if [ ! $1 ]; then usage exit 1 fi NEWVM=$1 CLONEVM=$2 SYSDISK=/dev/vg0/$NEWVM SYSDISKFILE=$VBOX_USER_HOME/Disks/$NEWVM/$NEWVM.vmdk CLONEDISK=/dev/vg0/$CLONEVM CLONEDISKFILE=$VBOX_USER_HOME/Disks/$CLONEVM/$CLONEVM.vmdk NEWVNC=`python nextvnc.py` if [ $NEWVNC -lt 5900 ]; then echo "Python error $NEWVNC" exit 99 fi NEWMAC_LASTPART=`python -c "print '%.2d' % ($(($NEWVNC - ($NEWVNC / 100 * 100))),)"` NEWMAC=aa:aa:aa:00:$(($NEWVNC / 100)):$NEWMAC_LASTPART VBOXMAC=`echo $NEWMAC | sed -e 's/://g'` if [ $CLONEVM ]; then #lvcreate -L 10G -n $NEWVM vg0 vboxmanage internalcommands createrawvmdk -filename $SYSDISKFILE -rawdisk $SYSDISK || exit 250 vboxmanage clonehd $CLONEDISKFILE $SYSDISKFILE --existing --remember || exit 250 else lvcreate -L 10G -n $NEWVM vg0 || exit 250 vboxmanage internalcommands createrawvmdk -filename $SYSDISKFILE -rawdisk $SYSDISK || exit 250 #vboxmanage createhd --filename $SYSDISK --size 10000 --variant Fixed --remember || exit 250 fi vboxmanage createvm --name $NEWVM --ostype Ubuntu_64 --register || exit 250 vboxmanage modifyvm $NEWVM --memory 512 --nic1 bridged --nictype1 Am79C973 --nicspeed1 1000000 --bridgeadapter1 eth0 --macaddress1 $VBOXMAC --boot1 disk --boot2 dvd --boot3 net || exit 250 vboxmanage storagectl $NEWVM --name sata0 --add sata --sataportcount 30 || exit 250 vboxmanage storageattach $NEWVM --storagectl sata0 --port 1 --device 0 --type hdd --medium $SYSDISKFILE || exit 250 echo $NEWVM $NEWMAC $NEWVNC 0 >> /srv/vmlist echo "Done!" echo "Machine '$NEWVM' with MAC '$NEWMAC' on port '$NEWVNC' created successfully!"