Compare commits

12 Commits

Author SHA1 Message Date
Nicolas MORIN 2010c3850b Ajout du code gérant l'option parametres en champ libre
+ création d'une variable avec le nom du script
2024-02-07 17:17:48 +01:00
Nicolas MORIN a3ccec6c2b Ajout du code gérant l'option réseau 2024-02-07 16:25:39 +01:00
Nicolas MORIN aa3bc0ae3a Ajout du code gérant l'option iso 2024-02-07 12:05:00 +01:00
Nicolas MORIN 91e7f10ddd Ajout du code gérant l'option disque 2024-01-05 15:50:54 +01:00
Nicolas MORIN 1cd2b0d307 Modification de la vérification du fichier 2024-01-05 15:49:54 +01:00
Nicolas MORIN 9664e92772 Correction orthographe + ajustement d'un commentaire 2024-01-05 15:49:18 +01:00
Nicolas MORIN 3ee9dc70a0 Ajout de la variable bin_qemu_img 2024-01-05 15:48:07 +01:00
Nicolas MORIN e6f3efb910 Ajout du support OVMF 2024-01-05 12:36:10 +01:00
Nicolas MORIN 90c7d9c0a7 Support de la génération du paramètre CPU SMP de QEMU 2024-01-05 12:35:39 +01:00
Nicolas MORIN 6661e6721b restauration d'un nommage de variable afin d'apporter une plus grande souplesse aux évolutions futures + ajout de l'option bios 2024-01-05 12:33:25 +01:00
Nicolas MORIN 79e05a4003 Ajout d'un nouveau code d'erreur 2024-01-05 12:29:38 +01:00
Nicolas MORIN c23108c8df Modification des droits et suppresion du script avec l'utilisation de getops 2024-01-05 10:23:54 +01:00
6 changed files with 231 additions and 233 deletions
Regular → Executable
+1
View File
@@ -20,6 +20,7 @@ Image générée avec l'[exention](https://github.com/ACTom/files_mindmap) `Mind
|3 |une option unique a été spécifiée plusieurs fois | |3 |une option unique a été spécifiée plusieurs fois |
|4 |la machine virtuelle existe déjà à l'emplacement spécifié| |4 |la machine virtuelle existe déjà à l'emplacement spécifié|
|5 |le paramètre d'une option est manquant | |5 |le paramètre d'une option est manquant |
|6 |dépendance manquante |
## Dévelopement ## Dévelopement
Regular → Executable
View File
Regular → Executable
View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Regular → Executable
View File
+229 -14
View File
@@ -1,7 +1,9 @@
#!/bin/bash #!/bin/bash
base_chemin_mv=/tmp/ramdisk/qemu-adm base_chemin_mv="/tmp/ramdisk/qemu-adm"
bin_qemu="qemu-system-x86_64" bin_qemu="/usr/bin/qemu-system-x86_64"
bin_qemu_img="/usr/bin/qemu-img"
nom_script=$(basename $0)
die() die()
{ {
@@ -18,16 +20,57 @@ verifMVExiste()
nouvMV() nouvMV()
{ {
local l_option=${1} local l_option=${1}
local l_parametre=${2} echo "l_option=${l_option}" # Debogage
shift
case "${l_option}" in case "${l_option}" in
"nom") "nom")
echo "-name ${l_parametre} \\" > ${chemin_mv} echo "-name ${1} \\" > ${chemin_mv}
;; ;;
"cpu") "cpu")
echo "-cpu ${l_parametre} \\" >> ${chemin_mv} echo "-cpu ${1} -smp cores=${2},theads=${3},sockets=1 \\" >> ${chemin_mv}
;; ;;
"memoire") "memoire")
echo "-memoire ${l_parametre} \\" >> ${chemin_mv} echo "-m ${1} \\" >> ${chemin_mv}
;;
"bios")
case "${1}" in
"OVMF")
cp /usr/share/ovmf/OVMF.fd ${base_chemin_mv}/OVMF.fd
echo "-drive if=pflash,format=raw,file=${base_chemin_mv}/OVMF.fd \\" >> ${chemin_mv}
;;
esac
;;
"disque")
echo "${2}"
if [[ ! -z ${2} ]]; then
if [[ ! -f ${bin_qemu_img} ]]; then
die "Le paquet qemu-utils n'est pas installé." 6
fi
echo "Création du disque..." # Debogage
qemu-img create -f ${2} ${1} ${3}
fi
echo "-drive file=${1},if=virtio \\" >> ${chemin_mv}
;;
"iso")
echo "--cdrom ${1} \\" >> ${chemin_mv}
;;
"reseau")
if [[ "${4}" != "false" ]]; then
echo "#PONT=${4}" >> ${chemin_mv}
fi
case "${6}" in
"a")
echo "#VLAN=${7}" >> ${chemin_mv}
;;
"t")
echo "#8021Q=${7}" >> ${chemin_mv}
;;
esac
echo "-device ${2},netdev=${1} -netdev tap,id=${1},ifname=${1},script=no,downscript=no \\" >> ${chemin_mv}
;;
"parametres")
echo "$@ \\" >> ${chemin_mv}
;; ;;
esac esac
} }
@@ -79,7 +122,27 @@ creeMV()
presenceParametre "$#" "$1" presenceParametre "$#" "$1"
shift shift
if [[ ${temoin_c} -ne 1 ]]; then if [[ ${temoin_c} -ne 1 ]]; then
commandes_a_executer+=("nouvMV cpu ${1}") # <type CPU>:<nombres cœurs CPU>:<nombre files d'execution>
cpu_type=$( echo ${1} | awk -F: '{print $1}' )
echo "${cpu_type}" # Debogage
if [[ -z "${cpu_type}" ]]; then
die "Le type de CPU n'est pas renseigné.\nSyntaxe attendue : <type CPU>:<nombres cœurs CPU>:<nombre files d'execution>." 5
fi
cpu_nombre_de_coeurs=$( echo ${1} | awk -F: '{print $2}' )
echo "${cpu_nombre_de_coeurs}" # Debogage
if [[ -z "${cpu_nombre_de_coeurs}" ]]; then
die "Le nombre de cœurs n'est pas renseigné.\nSyntaxe attendue : <type CPU>:<nombres cœurs CPU>:<nombre files d'execution>." 5
fi
cpu_nombre_de_files_d_execution=$( echo ${1} | awk -F: '{print $3}' )
echo "${cpu_nombre_de_files_d_execution}" # Debogage
if [[ -z "${cpu_nombre_de_files_d_execution}" ]]; then
die "Le nombre de files d'execution n'est pas renseigné.\nSyntaxe attendue : <type CPU>:<nombres cœurs CPU>:<nombre files d'execution>." 5
fi
commandes_a_executer+=("nouvMV cpu ${cpu_type} ${cpu_nombre_de_coeurs} ${cpu_nombre_de_files_d_execution}")
temoin_c=1 temoin_c=1
else else
die "L'option ${1} a déjà été renseignée." 3 die "L'option ${1} a déjà été renseignée." 3
@@ -105,7 +168,14 @@ creeMV()
presenceParametre "$#" "$1" presenceParametre "$#" "$1"
shift shift
if [[ ${temoin_b} -ne 1 ]]; then if [[ ${temoin_b} -ne 1 ]]; then
#commandes_a_executer+=( "nouvMV ${nom_mv}") case ${1} in
"ovmf"|"OVMF")
if [[ ! -f "/usr/share/ovmf/OVMF.fd" ]]; then
die "Le paquet ovmf n'est pas installé." 6
fi
commandes_a_executer+=( "nouvMV bios $(echo ${1} | tr '[:lower:]' '[:upper:]')")
;;
esac
temoin_b=1 temoin_b=1
else else
die "L'option ${1} a déjà été renseignée." 3 die "L'option ${1} a déjà été renseignée." 3
@@ -117,6 +187,32 @@ creeMV()
presenceParametre "$#" "$1" presenceParametre "$#" "$1"
echo "disque parametre=${parametre}" # Debogage echo "disque parametre=${parametre}" # Debogage
shift shift
# <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>)
disque_nom=$( echo ${1} | awk -F: '{print $1}' )
echo "disque_nom=${disque_nom}" # Debogage
if [[ -z "${disque_nom}" ]]; then
die "Le disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>)." 5
fi
if [[ "$(dirname ${1})" == "." ]];then
disque_nom="${base_chemin_mv}/${nom_mv}/${disque_nom}"
fi
disque_format=$( echo ${1} | awk -F: '{print $2}' )
echo "disque_format=${disque_format}" # Debogage
if [[ -z "${disque_format}" && "$(dirname ${1})" == "." ]]; then
die "Le format du disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>)." 5
fi
disque_capacite=$( echo ${1} | awk -F: '{print $3}' )
echo "disque_capacite=${disque_capacite}" # Debogage
if [[ -z "${disque_capacite}" && "$(dirname ${1})" == "." ]]; then
die "La capacité du disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>)." 5
fi
commandes_a_executer+=( "nouvMV disque ${disque_nom} ${disque_format} ${disque_capacite}")
;; ;;
"-i") # Iso "-i") # Iso
echo "iso" # Debogage echo "iso" # Debogage
@@ -124,6 +220,7 @@ creeMV()
presenceParametre "$#" "$1" presenceParametre "$#" "$1"
echo "iso parametre=${parametre}" # Debogage echo "iso parametre=${parametre}" # Debogage
shift shift
commandes_a_executer+=( "nouvMV iso ${1}")
;; ;;
'-r') # Reseau '-r') # Reseau
echo "reseau" # Debogage echo "reseau" # Debogage
@@ -131,13 +228,120 @@ creeMV()
presenceParametre "$#" "$1" presenceParametre "$#" "$1"
echo "reseau parametre=${parametre}" # Debogage echo "reseau parametre=${parametre}" # Debogage
shift shift
# Interface réseau simple :
## <nom interface>:(virtio|e1000):<activation pont>
# <nom interface>:(virtio|e1000):n
#
# Interface réseau dans un pont
## <nom interface>:(virtio|e1000):o:<nom pont>:<activation 8021q>
# <nom interface>:(virtio|e1000):o:<nom pont>:n
#
# Interface réseau dans un pont avec gestion des VLAN
# <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)
# <nom interface>:(virtio|e1000):(n|o:<nom pont>:(n|o:(t:<VIDs>|a:<VID>)))
# Initialisation des variables
reseau_nom_interface=false
reseau_type=false
reseau_activ_pont=false
reseau_nom_pont=false
reseau_activ_8021q=false
reseau_mode_8021q=false
reseau_vid=false
reseau_nom_interface=$( echo ${1} | awk -F: '{print $1}' )
if [[ -z "${reseau_nom_interface}" ]]; then
die "L'interface réseau n'est pas renseigné.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5
fi
reseau_type=$( echo ${1} | awk -F: '{print $2}' )
if [[ -z "${reseau_type}" ]]; then
die "Le type d'interface réseau n'est pas renseigné.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5
fi
case ${reseau_type} in
"virtio")
reseau_type="virtio-net-pci"
;; ;;
'-p') # Parametres "e1000")
echo "parametres" # Debogage ;;
parametre="${2}" *)
presenceParametre "$#" "$1" die "Le type d'interface réseau n'a pas une valeur connue.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5
echo "parametres parametre=${parametre}" # Debogage ;;
shift esac
reseau_activ_pont=$( echo ${1} | awk -F: '{print $3}' )
echo "reseau_activ_pont=${reseau_activ_pont}" # Debogage
if [[ -z "${reseau_activ_pont}" ]]; then
die "L'activation du pont n'est pas renseigné.\nVoici les deux syntaxes minimum posisbles : \n\tSans pont :\n\t\t<nom interface>:(virtio|e1000):n\n\tAvec pont :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
fi
case ${reseau_activ_pont} in
"n"|"N")
;;
"o"|"O")
reseau_nom_pont=$( echo ${1} | awk -F: '{print $4}' )
if [[ -z "${reseau_nom_pont}" ]]; then
die "Le nom du pont réseau n'est pas renseigné.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):o:<nom pont>:n." 5
fi
reseau_activ_8021q=$( echo ${1} | awk -F: '{print $5}' )
if [[ -z "${reseau_activ_8021q}" ]]; then
die "L'activation du VLAN n'est pas renseigné.\nVoici les deux syntaxes minimum posisbles :\n\tSans VLAN :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:n\n\tAvec VLAN :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
fi
case ${reseau_activ_8021q} in
"n"|"N")
;;
"o"|"O")
reseau_mode_8021q=$( echo ${1} | awk -F: '{print $6}' )
if [[ -z "${reseau_mode_8021q}" ]]; then
die "Le mode du 802.1Q n'est pas renseigné.\nSyntaxe attendue : <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
fi
case ${reseau_mode_8021q} in
"t"|"T")
reseau_vid=$( echo ${1} | awk -F: '{print $7}' )
echo "reseau_vid=${reseau_vid}" # Debogage
if [[ -z "${reseau_vid}" ]]; then
die "Les identifiants de VLAN ne sont pas renseignés.\nSyntaxe attendue : <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>).\nExemple pour un accès via trunk aux VLAN 10 et 20 :\n\t qemu-adm [...] -r tap0:virtio:o:br0:o:t:10,20" 5
fi
for vid in $(echo $reseau_vid | sed 's/,/ /g'); do
echo "vid=${vid}" # Debogage
if [[ !(${vid} -ge 1 && ${vid} -le 4096) ]]; then
die "${vid} n'est pas une valeur correcte. L'attendu est un ou plusieurs chiffres comprise entre 1 et 4096 séparé par une virgule.\nExemple pour un accès via trunk aux VLAN 10 et 20 :\n\t qemu-adm [...] -r tap0:virtio:o:br0:o:t:10,20"
fi
done
;;
"a"|"A")
reseau_vid=$( echo ${1} | awk -F: '{print $7}' )
if [[ -z "${reseau_vid}" ]]; then
die "L'identifiant de VLAN n'est pas renseignés.\nSyntaxe attendue : <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>).\nExemple pour un accès au VLAN 10 :\n\t qemu-adm [...] -r tap0:virtio:o:br0:o:a:10" 5
fi
if [[ ! "${reseau_vid}" =~ ^[0-9]+$ ]]; then
die "${reseau_vid} n'est pas une valeur correcte. L'attendu est un chiffre compris entre 1 et 4096.\nExemple pour un accès au VLAN 10 :\n\t qemu-adm [...] -r tap0:virtio:o:br0:o:a:10"
fi
if [[ !(${reseau_vid} -ge 1 && ${reseau_vid} -le 4096) ]]; then
die "${reseau_vid} n'est pas une valeur correcte. L'attendu est un chiffre compris entre 1 et 4096.\nExemple pour un accès au VLAN 10 :\n\t qemu-adm [...] -r tap0:virtio:o:br0:o:a:10"
fi
;;
*)
die "${reseau_mode_8021q} n'est pas une valeur connue.\nSyntaxe attendue : <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)\n"
;;
esac
;;
*)
die "${reseau_activ_8021q} n'est pas une valeur connue.\nVoici les deux syntaxes minimum posisbles : \n\tSans VLAN :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:n\n\tAvec VLAN :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
;;
esac
;;
*)
die "${reseau_activ_pont} n'est pas une valeur connue.\nVoici les deux syntaxes minimum posisbles : \n\tSans pont :\n\t\t<nom interface>:(virtio|e1000):n\n\tAvec pont :\n\t\t<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
;;
esac
commandes_a_executer+=( "nouvMV reseau ${reseau_nom_interface} ${reseau_type} ${reseau_activ_pont} ${reseau_nom_pont} ${reseau_activ_8021q} ${reseau_mode_8021q} ${reseau_vid}")
echo "nouvMV reseau ${reseau_nom_interface} ${reseau_type} ${reseau_activ_pont} ${reseau_nom_pont} ${reseau_activ_8021q} ${reseau_mode_8021q} ${reseau_vid}" # Debogage
;; ;;
"-s") # Sous-volume BTRFS "-s") # Sous-volume BTRFS
echo "sous-volume" # Debogage echo "sous-volume" # Debogage
@@ -162,6 +366,15 @@ creeMV()
usage "cree" usage "cree"
exit 0 exit 0
;; ;;
'--') # Autre parametres (champ libre)
echo "parametres" # Debogage
presenceParametre "$#" "$1"
shift
parametres="$@"
echo "parametres=${parametres}" # Debogage
commandes_a_executer+=( "nouvMV parametres $parametres")
shift $#
;;
*) # Autre *) # Autre
usage "cree" usage "cree"
;; ;;
@@ -181,6 +394,8 @@ usage()
case ${1} in case ${1} in
cree) cree)
echo "usage_cree" # Debogage echo "usage_cree" # Debogage
# qemu-img: Invalid image size specified. You may use k, M, G, T, P or E suffixes for
# qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes.
die "" 0 die "" 0
;; ;;
demarre) demarre)
-218
View File
@@ -1,218 +0,0 @@
#!/bin/bash
base_chemin_mv=/tmp/ramdisk/qemu-adm/
bin_qemu="qemu-system-x86_64"
die()
{
echo -e "\033[0;31m${1}\033[0m" 1>&2; exit ${2};
}
verifMVExiste()
{
if [ -e "${base_chemin_mv}${nom_mv}" ]; then
die "La machine virtuelle ${base_chemin_mv}${nom_mv} existe déjà." 3
fi
}
nouvMV()
{
verifMVExiste ${nom_mv} && mkdir -p ${base_chemin_mv}${nom_mv}
cat << "_EOF_" >> ${base_chemin_mv}${nom_mv}/qemu-${nom_mv}.mv
-name ${nom_mv} \
_EOF_
}
execCmd()
{
#verifEnv
for ((id_commande=0 ; "${#commandes_a_executer[*]}" - "${id_commande}"; id_commande++)); do
${commandes_a_executer["${id_commande}"]}
done
}
usage()
{
case ${1} in
cree)
echo "usage_cree"
die "" 0
;;
demarre)
echo "usage_demarre"
die "" 0
;;
arret)
echo "usage_arret"
die "" 0
;;
active)
echo "usage_active"
die "" 0
;;
desactive)
echo "usage_desactive"
die "" 0
;;
*)
echo "$(tput bold)Utilisation : $(basename ${0}) {-i|-s N} [OPTION]...$(tput sgr0)" 2>&1
echo -e "Permet de sauvegarder les sous-volumes BTRFS d'un serveur monté selon la procédure décrite par ycharbi.fr. Permet également d'effectuer un roulement des archives.\n"
echo -e "L'option -i ou -s sont requises pour l'exécution du script. Les deux peuvent êtres utilisées simultanément.\n"
echo -e "\n$(tput bold)Options :$(tput sgr0)"
echo -e "L'ordre des paramètres n'a pas d'importance.\n"
echo -e " -i\t\tExécute un instantané des sous-volumes BTRFS répertoriés dans le fichier texte passé en paramètre (via -f ou la variable \$fichierListeSousVolumes du présent script). Les entrées de cette liste doivent êtres conformes au retour de la commande \"btrfs subvolume list /\" pour être interprétés. Toute entrée invalide est ignorée"
echo -e " -s N\t\tSupprime l'instantané le plus ancien de chaque entrée de la liste. Un nombre désignant le seuil maximal d'instantané à conserver doit obligatoirement être passé en paramètre. L'instantané le plus ancien au delà de cette limite sera supprimé. Par sécurité, cette option ne supprime que le plus ancien. Si vous avez beaucoup d'instantanés au dessus de votre seuil, vous devrez répeter l'opération autant de fois que nécessaire"
echo -e " -f\t\tPermet de spécifier le fichier listant les sous-volumes à traiter pour gérer les instantanés. Ce fichier doit contenir des entrées correspondants parfaitement avec celles retournées par la commande \"btrfs subvolume list /\" pour être traités. Cette option est facultative. Si elle n'est pas renseignée, le script utilisera le fichier spécifié dans la variable \$fichierListeSousVolumes"
echo -e " -h\t\tAffiche cette aide. Si passée avec d'autres options, celles-ci seront ignorées pour n'afficher que l'aide"
echo -e "\n$(tput bold)Exemples :$(tput sgr0)"
echo -e "Réalisation d'un instantané avec un seuil de 13 archives (l'ancienne numéro 13 sera supprimée) :\n\t${0} -i -s 13 -f /root/cpt_instents/listeSousVolumes.txt\n"
echo -e "Peut être raccourci en :\n\t${0} -is 13 -f /root/cpt_instents/listeSousVolumes.txt"
echo -e "\nContenu du fichier listeSousVolumes.txt :"
echo -e "\tsystèmes/bullseye/@\n\tsystèmes/bullseye/@boot\n\ttmp/toto\n\tvar/lib/machines/web\n\tvar/lib/machines/courriel\n\tvar/lib/machines/routeur\n\tvar/lib/machines/wireguard"
echo -e "\nLe sous-volume tmp/toto n'existant pas, cette entrée sera ignorée sans entraver l'exécution du script. Il est également possible de commenter des lignes (en les rendant invalides)."
die ""
;;
esac
}
requis=0
case ${1} in
cree)
echo "Créer"
shift
if [[ "${1}" == "-h" ]]; then
usage "cree"
fi
nom_mv="${1}"
echo "nom_mv=${nom_mv}"
shift
echo 1 "$#"
while getopts "c:m:b:d:i:r:p:h" option; do
case "${option}" in
c) #cpu
requis=1
if [[ ${temoin_c} -ne 1 ]]; then
echo "cpu"
#nom_mv="${OPTARG}"
#commandes_a_executer+=( "nouvMV ${nom_mv}")
#echo "${OPTARG}"
temoin_c=1
else
die "L'option -${option} a déjà été renseignée." 2
fi
;;
m) #memoire
requis=1
if [[ ${temoin_m} -ne 1 ]]; then
echo "memoire"
#nom_mv="${OPTARG}"
#commandes_a_executer+=( "nouvMV ${nom_mv}")
#echo "${OPTARG}"
temoin_m=1
else
die "L'option -${option} a déjà été renseignée." 2
fi
;;
b) #bios
requis=1
if [[ ${temoin_b} -ne 1 ]]; then
echo "bios"
#nom_mv="${OPTARG}"
#commandes_a_executer+=( "nouvMV ${nom_mv}")
#echo "${OPTARG}"
temoin_b=1
else
die "L'option -${option} a déjà été renseignée." 2
fi
;;
d) #disque
echo "disque"
;;
i) #iso
echo "iso"
;;
r) #reseau
echo "reseau"
;;
p) #parametres
echo "parametres"
;;
h) #aide
usage "cree"
exit 0
;;
*) #autre
usage "cree"
;;
esac
done
#shift $((OPTIND-1))
# if [[ ${requis} -eq 1 ]]; then
# execCmd
# else
# echo -e "Les options \"-i\" ou \"-s\" doivent êtres fournies.\n" >&2
# usage
# fi
;;
demarre)
echo "Démarre"
shift
if [[ "${1}" == "-h" ]]; then
usage "demarre"
fi
nom_mv="${1}"
echo "nom_mv=${nom_mv}"
shift
echo 1 "$#"
while getopts "d" option; do
case "${option}" in
d) #demon
requis=1
if [[ ${temoin_d} -ne 1 ]]; then
echo "demon"
#nom_mv="${OPTARG}"
#commandes_a_executer+=( "nouvMV ${nom_mv}")
#echo "${OPTARG}"
temoin_d=1
else
die "L'option -${option} a déjà été renseignée." 2
fi
;;
*) #autre
usage "demarre"
;;
esac
done
;;
arret)
echo "Arrêt"
shift
if [[ "${1}" == "-h" ]]; then
usage "arret"
fi
nom_mv="${1}"
echo "nom_mv=${nom_mv}"
;;
active)
echo "Active"
shift
if [[ "${1}" == "-h" ]]; then
usage "active"
fi
nom_mv="${1}"
echo "nom_mv=${nom_mv}"
;;
desactive)
echo "Désactive"
shift
if [[ "${1}" == "-h" ]]; then
usage "desactive"
fi
nom_mv="${1}"
echo "nom_mv=${nom_mv}"
;;
*)
usage
;;
esac