-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvboxhl.sh
More file actions
executable file
·129 lines (110 loc) · 3.07 KB
/
vboxhl.sh
File metadata and controls
executable file
·129 lines (110 loc) · 3.07 KB
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh
#
# vboxhl.sh: Simple script to interactively start/stop headless VirtualBox VMs
# --------- Copyright (C) 2007 Leif Hedstrom <leif@ogre.com>
#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
: ${DIALOG=dialog}
# TMP files
DIAGFILE="/tmp/$(basename $0).$$.diag"
VBOXFILE="/tmp/$(basename $0).$$.vbox"
# cleanup
trap "rm -f $DIAGFILE $VBOXFILE" 0 1 2 5 15
do_start() {
echo "\"\"" "\"\"" >$VBOXFILE
VBoxManage list vms | awk -F\" '/\"/ {printf "\"%s\" %s\n", $2, $3}' | $sort >>$VBOXFILE
$DIALOG --clear --title "Start VirtualBox (headless)" \
--menu "Select a VM from the list below:" 0 0 0 \
--file $VBOXFILE 2>$DIAGFILE
retval=$?
choice=$(cat $DIAGFILE)
clear
case $retval in
0)
if [ "$choice" != "" ]; then
echo "Starting $choice..."
VBoxManage startvm "$choice" --type headless
fi
;;
esac
}
do_kill() {
echo "\"\"" "\"\"" >$VBOXFILE
VBoxManage list runningvms | awk -F\" '/\"/ {printf "\"%s\" %s\n", $2, $3}' | $sort >>$VBOXFILE
$DIALOG --clear --title "Kill VirtualBox instance (headless)" \
--menu "Select a VM from the list below:" 0 0 0 \
--file $VBOXFILE 2>$DIAGFILE
retval=$?
choice=$(cat $DIAGFILE)
clear
case $retval in
0)
if [ "$choice" != "" ]; then
echo "Starting $choice..."
VBoxManage controlvm "$choice" poweroff
fi
;;
esac
}
do_help() {
echo "vboxhl: Start / stop headless VirtualBox instances"
echo
echo "Options:"
echo " -s | --start Select a VM to start"
echo " -k | --kill Select a VM to kill"
echo " -S | --sort Sort the VM list by name"
echo " -h | --help Show help"
}
TEMP=$(getopt -o skSh --long stop,kill,sort,help -n 'vboxhl' -- "$@")
if [ $? != 0 ]; then
echo "Terminating..." >&2
exit 1
fi
eval set -- "$TEMP"
sort="cat"
while true; do
case "$1" in
-s | --start)
do_start
exit 0
;;
-k | --kill)
do_kill
exit 0
;;
-S | --sort)
sort="sort"
shift
;;
-h | --help)
do_help
exit 0
;;
--)
shift
break
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
# If we get here, none of -s or -k was given, so default to "start"
do_start