add better gestion of args
This commit is contained in:
parent
37caf10ca4
commit
aa98ee4c37
1 changed files with 67 additions and 14 deletions
81
vm-start.sh
81
vm-start.sh
|
@ -3,8 +3,9 @@
|
||||||
|
|
||||||
#RESULT_POSSIBLE=("init","start","start-backup","create","backup","restore","suppr")
|
#RESULT_POSSIBLE=("init","start","start-backup","create","backup","restore","suppr")
|
||||||
|
|
||||||
|
# Constante d'éxecutions.
|
||||||
VERSION=0.6
|
VERSION=0.6
|
||||||
USAGE="vm-start NAME COMMAND [PARAMETER] [OPTION]
|
USAGE="vm-start [ NAME COMMAND [PARAMETER] ] [OPTION]
|
||||||
|
|
||||||
Script to manage virtual machine easily.
|
Script to manage virtual machine easily.
|
||||||
|
|
||||||
|
@ -27,12 +28,12 @@ PARAMETTER available
|
||||||
-v, --version Print the version of this program and quit
|
-v, --version Print the version of this program and quit
|
||||||
|
|
||||||
OPTION available
|
OPTION available
|
||||||
NPROC=<nb proc> Def the number of proc of the vm
|
nproc=<nb proc> Def the number of proc of the vm
|
||||||
MEMORY=<mem> Def the qty of memory allocated to the vm
|
memory=<mem> Def the qty of memory allocated to the vm
|
||||||
SIZE=<size> Def the size that should be allocated by create
|
size=<size> Def the size that should be allocated by create
|
||||||
UEFI=<uefi> Select if there will be an UEFI by default.
|
uefi Select if there will be an UEFI by default.
|
||||||
can be either set or unset. By default is unset.
|
can be either set or unset. By default is unset.
|
||||||
OPTIONS=<option> additinal options to give to qemu. By default is
|
options=<option> additinal options to give to qemu. By default is
|
||||||
-display gtk -vga qxl
|
-display gtk -vga qxl
|
||||||
"
|
"
|
||||||
MAIN_LOCATION="$HOME/virtual_machine/"
|
MAIN_LOCATION="$HOME/virtual_machine/"
|
||||||
|
@ -44,7 +45,12 @@ OPTION="-display gtk \
|
||||||
#-display sdl
|
#-display sdl
|
||||||
#-usbdevice tablet \
|
#-usbdevice tablet \
|
||||||
|
|
||||||
mkdir -p $MAIN_LOCATION
|
|
||||||
|
|
||||||
|
HELP() {
|
||||||
|
echo "$USAGE"
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
INIT() {
|
INIT() {
|
||||||
echo "INIT for vm $1"
|
echo "INIT for vm $1"
|
||||||
|
@ -180,21 +186,70 @@ SUPPRESS() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# gère les paramètres
|
||||||
|
|
||||||
|
for i in $@;
|
||||||
|
do
|
||||||
|
if [ "$i" == "-h" ] || [ "$i" == "--help" ]
|
||||||
|
then
|
||||||
|
HELP
|
||||||
|
elif [ "$i" == "-v" ] || [ "$i" == "--version" ]
|
||||||
|
then
|
||||||
|
echo "vm-start ${VERSION}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# verifie au moins assez d'options pour utiliser le programme.
|
||||||
|
|
||||||
if [ $# -lt 2 ]
|
if [ $# -lt 2 ]
|
||||||
then
|
then
|
||||||
echo "Error, not enough args"
|
echo "Error, not enough args"
|
||||||
echo "${USAGE}"
|
HELP
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# vérifie que le dossier pour stocker les vms existe & change le dossier actif pour qu'il soit cellui du lanceur.
|
||||||
|
|
||||||
|
mkdir -p $MAIN_LOCATION
|
||||||
cd "$( dirname "$( readlink -f "$0" )" )"
|
cd "$( dirname "$( readlink -f "$0" )" )"
|
||||||
|
|
||||||
if [[ ! -f conf/$1-vm_var.sh ]]
|
# Véréfie qu'il y ait bien un fichier de config pour la vm que l'on tente de démarer dans la cas contraire en génére un.
|
||||||
|
# possibilitée de générer à nouveau le fichier de config avec vm-start nom-vm init
|
||||||
|
|
||||||
|
if [ "$2" == "init" ]
|
||||||
then
|
then
|
||||||
INIT $1
|
INIT $1
|
||||||
|
elif [[ ! -f conf/$1-vm_var.sh ]]
|
||||||
|
then
|
||||||
|
echo "no config file found. creating one in conf/${1}-vm_var.sh"
|
||||||
|
INIT $1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
source conf/$1-vm_var.sh
|
#Vérifie si l'option UEFI est set dans le fichier de config. Si oui l'ajoutte aux options.
|
||||||
|
#TODO l'ajoutter au detecteur d'options.
|
||||||
|
|
||||||
|
. conf/$1-vm_var.sh
|
||||||
|
|
||||||
|
for (( i=3; i<=$#; i++)); do
|
||||||
|
if [ "${!i%=*}" == "nproc" ]
|
||||||
|
then
|
||||||
|
NPROC="${!i#*=}"
|
||||||
|
elif [ "${!i%=*}" == "memory" ]
|
||||||
|
then
|
||||||
|
MEMORY="${!i#*=}"
|
||||||
|
elif [ "${!i%=*}" == "uefi" ]
|
||||||
|
then
|
||||||
|
unset UEFI
|
||||||
|
OPTION="$OPTION \
|
||||||
|
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.4m.fd \
|
||||||
|
-drive if=pflash,format=raw,file=${MAIN_LOCATION}${LOCATION}OVMF_VARS.4m.fd"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
if [ -n "${UEFI+x}" ]
|
if [ -n "${UEFI+x}" ]
|
||||||
then
|
then
|
||||||
OPTION="$OPTION \
|
OPTION="$OPTION \
|
||||||
|
@ -233,10 +288,8 @@ elif [[ $2 == "suppr" ]]
|
||||||
then
|
then
|
||||||
echo "suppressing all data of the vm $1"
|
echo "suppressing all data of the vm $1"
|
||||||
SUPPRESS
|
SUPPRESS
|
||||||
elif [[ "$2" == "version" ]]
|
|
||||||
then
|
|
||||||
echo "script lancement vm version v.$VERSION"
|
|
||||||
else
|
else
|
||||||
echo "commande $2 inconnue"
|
echo "commande $2 inconnue"
|
||||||
|
HELP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue