-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvbox-utils.sh
92 lines (81 loc) · 1.42 KB
/
vbox-utils.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
# Return true if VM is in given state
#
# if vm_state $VMNAME "running"
# then
# echo "$VMNAME is running"
# fi
#
function vm_state() {
local VM=$1
local STATE=$2
local state=`VBoxManage showvminfo --machinereadable $VM | grep VMState=`
if [[ $state =~ $STATE ]] ; then true ; else false ;fi
}
# Wait until vm enters given state
#
# wait_vm_state $VMNAME "running|poweroff"
function wait_vm_state() {
local VM=$1
local STATE=$2
until vm_state $VM $STATE
do
echo "Waiting for $VM state=$STATE"
sleep 2
done
}
# Return true if VM exists
#
# if vm_exists $VMNAME
# then
# echo "$VMNAME exists"
# fi
#
function vm_exists() {
local VM=$1
local exists=`VBoxManage list vms | grep \"$VM\"`
if [[ $exists ]] ; then true ; else false ;fi
}
#
# Start VM
#
function vm_start() {
local VM=$1
if vm_exists $VM
then
if vm_state $VM "poweroff"
then
echo "[Starting $VM ...]"
VBoxManage startvm $VM
sleep 1
wait_vm_state $VM "running"
fi
fi
}
#
# Stop VM
#
function vm_stop() {
local VM=$1
if vm_exists $VM
then
if vm_state $VM "running"
then
echo "[Stopping $VM ...]"
VBoxManage controlvm $VM acpipowerbutton
sleep 1
wait_vm_state $VM "poweroff"
fi
fi
}
#
# Delete VM
#
function vm_delete() {
local VM=$1
if vm_exists $VM
then
vm_stop $VM
vboxmanage unregistervm $VM --delete
fi
}