Script to manage the list, show, start and stop virtual machines:
#!/bin/sh
# /**
# @file manage_virtualbox.sh
# @author Oscar Gomez Fuente <oscargomezf@gmail.com>
# @ingroup iThings
# @date 28/01/2015
# @version 1.0.0
# @section DESCRIPTION
# Script to start virtual machine with drupal bitnami-drupal-7.34-0-ubuntu-14.04
# */
list_vm() {
VMs=$(VBoxManage list runningvms | sed "s/ //g")
if [ "$VMs" == "" ]; then
echo "[INFO] No VMs running"
else
echo "[INFO] List VMs running"
num=0
for i in $VMs
do
#echo "Element: $i"
vm_name=$(echo $i | grep -o '\".*\"')
vm_number=$(echo $i | grep -o '\{.*\}')
#echo "vm_name: -$vm_name-"
#echo "vm_number: -$vm_number-"
num=$(expr $num + 1)
echo "[$num] $vm_name - $vm_number"
done
fi
}
show_vm() {
VMs=$(VBoxManage list vms | sed "s/ //g")
if [ "$VMs" == "" ]; then
echo "[INFO] No VMs installed"
else
echo "[INFO] Show VMs installed"
num=0
for i in $VMs
do
#echo "Element: $i"
vm_name=$(echo $i | grep -o '\".*\"')
vm_number=$(echo $i | grep -o '\{.*\}')
#echo "vm_name: -$vm_name-"
#echo "vm_number: -$vm_number-"
num=$(expr $num + 1)
echo "[$num] $vm_name - $vm_number"
done
fi
}
stop_vm() {
VMs=$(VBoxManage list runningvms | sed "s/ //g")
num=0
if [ "$VMs" == "" ]; then
echo "[INFO] No VMs running"
else
for i in $VMs
do
#echo "Element: $i"
vm_name=$(echo $i | grep -o '\".*\"')
vm_number=$(echo $i | grep -o '\{.*\}')
#echo "vm_name: -$vm_name-"
#echo "vm_number: -$vm_number-"
num=$(expr $num + 1)
if [ "$1" == "$num" ]; then
echo "[INFO] Stopping VM: $vm_name"
VBoxManage controlvm $vm_number poweroff
fi
done
fi
}
start_vm() {
VMs=$(VBoxManage list vms | sed "s/ //g")
num=0
if [ "$VMs" == "" ]; then
echo "[INFO] No exist VMs"
else
for i in $VMs
do
#echo "Element: $i"
vm_name=$(echo $i | grep -o '\".*\"')
vm_number=$(echo $i | grep -o '\{.*\}')
#echo "vm_name: -$vm_name-"
#echo "vm_number: -$vm_number-"
num=$(expr $num + 1)
if [ "$1" == "$num" ]; then
echo "[INFO] Starting VM: $i"
VBoxManage startvm $vm_number --type headless
fi
done
fi
}
save_vm() {
VMs=$(VBoxManage list runningvms | sed "s/ //g")
num=0
if [ "$VMs" == "" ]; then
echo "[INFO] No VMs running"
else
for i in $VMs
do
#echo "Element: $i"
vm_name=$(echo $i | grep -o '\".*\"')
vm_number=$(echo $i | grep -o '\{.*\}')
#echo "vm_name: -$vm_name-"
#echo "vm_number: -$vm_number-"
num=$(expr $num + 1)
if [ "$1" == "$num" ]; then
echo "[INFO] Saving VM: $vm_name"
VBoxManage controlvm $vm_number savestate
fi
done
fi
}
Script to add to the init StartVM:
# /**
# @file /etc/init.d/StartVM
# @author Oscar Gomez Fuente <oscargomezf@gmail.com>
# @ingroup iThings
# @date 09/02/2015
# @version 1.0.0
# @section DESCRIPTION
# Script to start virtual machine with virtualbox Bitnami Redmine v2.6.1
# and ZeroShell 3.2.1
# */
#Edit these variables!
VM_USER="oscargomezf"
VM_REDMINE="bitnami-redmine-2.6.1-0-ubuntu-14.04"
VM_ZERO_SHELL="ZeroShell-3.2.1"
case "$1" in
start)
echo "Starting VirtualBox $VM_ZERO_SHELL ..."
sudo -u $VM_USER VBoxManage startvm $VM_ZERO_SHELL --type headless
sleep 30
echo "Starting VirtualBox $VM_REDMINE ..."
sudo -u $VM_USER VBoxManage startvm $VM_REDMINE --type headless
;;
stop)
echo "Saving state of Virtualbox $VM_REDMINE ..."
sudo -u $VM_USER VBoxManage controlvm $VM_REDMINE savestate
echo "Saving state of Virtualbox $VM_ZERO_SHELL ..."
sudo -u $VM_USER VBoxManage controlvm $VM_ZERO_SHELL savestate
;;
*)
echo "Usage: /etc/init.d/StartVM {start|stop}"
exit 1
;;
esac
exit 0
Now, if you want to re-add this service to be started on boot up, you can simply use (start-> 91 & stop->11):
# update-rc.d name_serivce defaults 91 11
To remove a service:
# update-rc.d -f name_StartVM remove