Evolution #3

Open
nmorin wants to merge 4 commits from ycharbi into develop

@ -5,6 +5,8 @@
base_chemin_mv="/tmp/ramdisk/qemu-adm" base_chemin_mv="/tmp/ramdisk/qemu-adm"
bin_qemu="/usr/bin/qemu-system-x86_64" bin_qemu="/usr/bin/qemu-system-x86_64"
bin_qemu_img="/usr/bin/qemu-img" bin_qemu_img="/usr/bin/qemu-img"
bin_ip="/usr/bin/ip"
bin_bridge="/usr/sbin/bridge"
chemin_services_demons="/usr/local/etc/systemd/system" chemin_services_demons="/usr/local/etc/systemd/system"
chemin_services_production="/etc/systemd/system" chemin_services_production="/etc/systemd/system"
nom_script=$(basename $0) nom_script=$(basename $0)
@ -70,39 +72,48 @@ nouvMV()
esac esac
;; ;;
"disque") "disque")
echo "${2}" echo "${2}" # Debogage
if [[ ! -z ${2} ]]; then if [[ ! -z "${2}" && "${2}" =~ ^(raw|qcow2)$ ]]; then
nmorin commented 1 year ago
Review

Ce test dois être mis au niveau de la saisi utilisateur. Ici, le fichier sera déjà créé. A l'activation de la fonction verifMVExiste, il sera impossible à l'utilisateur de créer une nouvelle fois sa MV sans passer par une suppression.

Ce test dois être mis au niveau de la saisi utilisateur. Ici, le fichier sera déjà créé. A l'activation de la fonction `verifMVExiste`, il sera impossible à l'utilisateur de créer une nouvelle fois sa MV sans passer par une suppression.
if [[ ! -f ${bin_qemu_img} ]]; then if [[ ! -f ${bin_qemu_img} ]]; then
die "Le paquet qemu-utils n'est pas installé." 6 die "Le paquet qemu-utils n'est pas installé." 6
fi fi
echo "Création du disque..." # Debogage echo "Création du disque..." # Debogage
qemu-img create -f ${2} ${1} ${3} qemu-img create -f ${2} ${1} ${3}
else
die "Le format du disque doit être raw ou qcow2." 5
fi
if [[ "${4}" =~ ^(virtio|ide)$ ]]; then
echo "-drive file=${1},if=${4} \\" >> ${chemin_mv}
else
die "Le type du disque doit être virtio ou ide." 5
fi fi
echo "-drive file=${1},if=virtio \\" >> ${chemin_mv}
;; ;;
"iso") "iso")
echo "-cdrom ${1} \\" >> ${chemin_mv} echo "-cdrom ${1} \\" >> ${chemin_mv}
;; ;;
"reseau") "reseau")
if [[ "${4}" != "faux" ]]; then if [[ "${1}" != "faux" ]]; then
echo "#PONT=${4}" >> ${chemin_mv} if [[ "${5}" != "faux" ]]; then
if [[ "${5}" == "n" ]]; then echo "#PONT=${5}" >> ${chemin_mv}
if [[ "${6}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv} echo "#VLAN=0" >> ${chemin_mv}
fi fi
fi fi
case "${6}" in case "${7}" in
"a") "a")
echo "#VLAN=${7}" >> ${chemin_mv} echo "#VLAN=${8}" >> ${chemin_mv}
;; ;;
"t") "t")
echo "#8021Q=${7}" >> ${chemin_mv} echo "#8021Q=${8}" >> ${chemin_mv}
;; ;;
esac esac
if [[ "${4}" != "faux" ]]; then if [[ "${4}" != "faux" ]]; then
echo "#INTERFACE=${1}" >> ${chemin_mv} echo "#INTERFACE=${2}" >> ${chemin_mv}
fi
echo "-device ${3},netdev=${2} -netdev tap,id=${2},ifname=${2},script=no,downscript=no \\" >> ${chemin_mv}
else
echo "-net none \\" >> ${chemin_mv}
fi fi
echo "-device ${2},netdev=${1} -netdev tap,id=${1},ifname=${1},script=no,downscript=no \\" >> ${chemin_mv}
;; ;;
"kvm") "kvm")
echo "-enable-kvm \\" >> ${chemin_mv} echo "-enable-kvm \\" >> ${chemin_mv}
@ -151,7 +162,7 @@ presenceParametre()
local l_nombre_arguments="${1}" local l_nombre_arguments="${1}"
local l_nom_option="${2}" local l_nom_option="${2}"
local l_nombre_parametres=${l_nombre_arguments}-1 # On soustrait l'option du nombre d'arguments resultant le nombre de parametres local l_nombre_parametres=${l_nombre_arguments}-1 # On soustrait l'option du nombre d'arguments resultant le nombre de parametres
if [[ "${l_nombre_parametres}" -eq 0 ]]; then if [[ "${l_nombre_parametres}" -eq 0 || "${3:0:1}" == "-" ]]; then
die "L'option ${l_nom_option} n'a pas de paramètre." 5 die "L'option ${l_nom_option} n'a pas de paramètre." 5
fi fi
} }
@ -168,7 +179,7 @@ creeMV()
echo "cpu" # Debogage echo "cpu" # Debogage
parametre="${2}" parametre="${2}"
echo "cpu parametre=${parametre}" # Debogage echo "cpu parametre=${parametre}" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
if [[ ${temoin_c} -ne 1 ]]; then if [[ ${temoin_c} -ne 1 ]]; then
# <type CPU>:<nombres cœurs CPU>:<nombre files d'execution> # <type CPU>:<nombres cœurs CPU>:<nombre files d'execution>
@ -201,7 +212,7 @@ creeMV()
echo "memoire" # Debogage echo "memoire" # Debogage
parametre="${2}" parametre="${2}"
echo "memoire parametre=${parametre}" # Debogage echo "memoire parametre=${parametre}" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
if [[ ${temoin_m} -ne 1 ]]; then if [[ ${temoin_m} -ne 1 ]]; then
commandes_a_executer+=( "nouvMV memoire ${1}") commandes_a_executer+=( "nouvMV memoire ${1}")
@ -214,7 +225,7 @@ creeMV()
echo "bios" # Debogage echo "bios" # Debogage
parametre="${2}" parametre="${2}"
echo "bios parametre=${parametre}" # Debogage echo "bios parametre=${parametre}" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
if [[ ${temoin_b} -ne 1 ]]; then if [[ ${temoin_b} -ne 1 ]]; then
case ${1} in case ${1} in
@ -233,40 +244,46 @@ creeMV()
"-d") # Disque "-d") # Disque
echo "disque" # Debogage echo "disque" # Debogage
parametre="${2}" parametre="${2}"
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
echo "disque parametre=${parametre}" # Debogage echo "disque parametre=${parametre}" # Debogage
shift shift
# <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>) # <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>:(virtio|ide))
disque_nom=$( echo ${1} | awk -F: '{print $1}' ) disque_nom=$( echo ${1} | awk -F: '{print $1}' )
echo "disque_nom=${disque_nom}" # Debogage echo "disque_nom=${disque_nom}" # Debogage
if [[ -z "${disque_nom}" ]]; then if [[ -z "${disque_nom}" ]]; then
die "Le disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>)." 5 die "Le disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>:(virtio|ide))." 5
fi fi
if [[ "$(dirname ${1})" == "." ]];then if [[ "$(dirname ${1})" == "." ]];then
disque_nom="${base_chemin_mv}/${disque_nom}" disque_nom="${base_chemin_mv}/${disque_nom}"
fi fi
disque_format=$( echo ${1} | awk -F: '{print $2}' ) disque_format=$( echo ${1} | awk -F: '{print $2}' )
echo "disque_format=${disque_format}" # Debogage echo "disque_format=${disque_format}" # Debogage
if [[ -z "${disque_format}" && "$(dirname ${1})" == "." ]]; then 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 die "Le format du disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>:(virtio|ide))." 5
fi fi
disque_capacite=$( echo ${1} | awk -F: '{print $3}' ) disque_capacite=$( echo ${1} | awk -F: '{print $3}' )
echo "disque_capacite=${disque_capacite}" # Debogage echo "disque_capacite=${disque_capacite}" # Debogage
if [[ -z "${disque_capacite}" && "$(dirname ${1})" == "." ]]; then 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 die "La capacité du disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>:(virtio|ide))." 5
fi
disque_type=$( echo ${1} | awk -F: '{print $4}' )
echo "disque_type=${disque_type}" # Debogage
if [[ -z "${disque_type}" && "$(dirname ${1})" == "." ]]; then
nmorin commented 1 year ago
Review

La condition && "$(dirname ${1})" == "." est a revoir dans l'ensemble des conditions de l'option `-d.

La condition `&& "$(dirname ${1})" == "."` est a revoir dans l'ensemble des conditions de l'option `-d.
die "Le type du disque n'est pas renseigné.\nSyntaxe attendue : <chemin disque>|(<chemin disque>|<nom disque>):(raw|qcow2):<capacité>:(virtio|ide))." 5
fi fi
commandes_a_executer+=( "nouvMV disque ${disque_nom} ${disque_format} ${disque_capacite}") commandes_a_executer+=( "nouvMV disque ${disque_nom} ${disque_format} ${disque_capacite} ${disque_type}")
;; ;;
"-i") # Iso "-i") # Iso
echo "iso" # Debogage echo "iso" # Debogage
parametre="${2}" parametre="${2}"
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
echo "iso parametre=${parametre}" # Debogage echo "iso parametre=${parametre}" # Debogage
shift shift
commandes_a_executer+=( "nouvMV iso ${1}") commandes_a_executer+=( "nouvMV iso ${1}")
@ -274,22 +291,23 @@ creeMV()
'-r') # Reseau '-r') # Reseau
echo "reseau" # Debogage echo "reseau" # Debogage
parametre="${2}" parametre="${2}"
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
echo "reseau parametre=${parametre}" # Debogage echo "reseau parametre=${parametre}" # Debogage
shift shift
# Aucune interface réseau (désactive le réseau par défaut de Qemu si non spécifié par l'utilisateur) :
# n
# Interface réseau simple : # Interface réseau simple :
## <nom interface>:(virtio|e1000):<activation pont> ## (n|o:<nom interface>:(virtio|e1000):<activation pont>)
# <nom interface>:(virtio|e1000):n # (n|o:<nom interface>:(virtio|e1000):n)
# #
# Interface réseau dans un pont # Interface réseau dans un pont
## <nom interface>:(virtio|e1000):o:<nom pont>:<activation 8021q> ## (n|o:<nom interface>:(virtio|e1000):o:<nom pont>:<activation 8021q>)
# <nom interface>:(virtio|e1000):o:<nom pont>:n # (n|o:<nom interface>:(virtio|e1000):o:<nom pont>:n)
# #
# Interface réseau dans un pont avec gestion des VLAN # Interface réseau dans un pont avec gestion des VLAN
# <nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>) # (n|o:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>))
# (n|o:<nom interface>:(virtio|e1000):(n|o:<nom pont>:(n|o:(t:<VIDs>|a:<VID>))))
# <nom interface>:(virtio|e1000):(n|o:<nom pont>:(n|o:(t:<VIDs>|a:<VID>)))
# Initialisation des variables # Initialisation des variables
reseau_nom_interface="faux" reseau_nom_interface="faux"
@ -300,14 +318,23 @@ creeMV()
reseau_mode_8021q="faux" reseau_mode_8021q="faux"
reseau_vid="faux" reseau_vid="faux"
reseau_nom_interface=$( echo ${1} | awk -F: '{print $1}' ) reseau_activ_interface=$( echo ${1} | awk -F: '{print $1}' )
if [[ -z "${reseau_activ_interface}" ]]; then
die "L'activation du réseau n'est pas renseigné.\nSpécifiez (n|N) pour désactiver le réseau sur la machine virtuelle ou (o|O) pour créer une interface réseau.\nVoici les deux syntaxes minimales posisbles : \n\tSans réseau :\n\t\tn\n\tAvec réseau :\n\t\to:<nom interface>:(virtio|e1000):n." 5
fi
case ${reseau_activ_interface} in
"n"|"N")
reseau_activ_interface="faux"
;;
"o"|"O")
reseau_nom_interface=$( echo ${1} | awk -F: '{print $2}' )
if [[ -z "${reseau_nom_interface}" ]]; then if [[ -z "${reseau_nom_interface}" ]]; then
die "L'interface réseau n'est pas renseigné.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5 die "L'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
fi fi
reseau_type=$( echo ${1} | awk -F: '{print $2}' ) reseau_type=$( echo ${1} | awk -F: '{print $3}' )
if [[ -z "${reseau_type}" ]]; then 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 die "Le type d'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
fi fi
case ${reseau_type} in case ${reseau_type} in
"virtio") "virtio")
@ -316,42 +343,42 @@ creeMV()
"e1000") "e1000")
;; ;;
*) *)
die "Le type d'interface réseau n'a pas une valeur connue.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5 die "Le type d'interface réseau n'a pas une valeur connue.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
;; ;;
esac esac
reseau_activ_pont=$( echo ${1} | awk -F: '{print $3}' ) reseau_activ_pont=$( echo ${1} | awk -F: '{print $4}' )
echo "reseau_activ_pont=${reseau_activ_pont}" # Debogage echo "reseau_activ_pont=${reseau_activ_pont}" # Debogage
if [[ -z "${reseau_activ_pont}" ]]; then 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 die "L'activation du pont n'est pas renseigné.\nVoici les deux syntaxes minimale posisbles : \n\tSans pont :\n\t\to:<nom interface>:(virtio|e1000):n\n\tAvec pont :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
fi fi
case ${reseau_activ_pont} in case ${reseau_activ_pont} in
"n"|"N") "n"|"N")
;; ;;
"o"|"O") "o"|"O")
reseau_nom_pont=$( echo ${1} | awk -F: '{print $4}' ) reseau_nom_pont=$( echo ${1} | awk -F: '{print $5}' )
if [[ -z "${reseau_nom_pont}" ]]; then 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 die "Le nom du pont réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
fi fi
reseau_activ_8021q=$( echo ${1} | awk -F: '{print $5}' ) reseau_activ_8021q=$( echo ${1} | awk -F: '{print $6}' )
if [[ -z "${reseau_activ_8021q}" ]]; then 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 die "L'activation du VLAN n'est pas renseigné.\nVoici les deux syntaxes minimales posisbles :\n\tSans VLAN :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:n\n\tAvec VLAN :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
fi fi
case ${reseau_activ_8021q} in case ${reseau_activ_8021q} in
"n"|"N") "n"|"N")
;; ;;
"o"|"O") "o"|"O")
reseau_mode_8021q=$( echo ${1} | awk -F: '{print $6}' ) reseau_mode_8021q=$( echo ${1} | awk -F: '{print $7}' )
if [[ -z "${reseau_mode_8021q}" ]]; then 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 die "Le mode du 802.1Q n'est pas renseigné.\nSyntaxe attendue : o:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
fi fi
case ${reseau_mode_8021q} in case ${reseau_mode_8021q} in
"t"|"T") "t"|"T")
reseau_vid=$( echo ${1} | awk -F: '{print $7}' ) reseau_vid=$( echo ${1} | awk -F: '{print $8}' )
echo "reseau_vid=${reseau_vid}" # Debogage echo "reseau_vid=${reseau_vid}" # Debogage
if [[ -z "${reseau_vid}" ]]; then 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 die "Les identifiants de VLAN ne sont pas renseignés.\nSyntaxe attendue : o:<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 fi
for vid in $(echo $reseau_vid | sed 's/,/ /g'); do for vid in $(echo $reseau_vid | sed 's/,/ /g'); do
echo "vid=${vid}" # Debogage echo "vid=${vid}" # Debogage
@ -361,9 +388,9 @@ creeMV()
done done
;; ;;
"a"|"A") "a"|"A")
reseau_vid=$( echo ${1} | awk -F: '{print $7}' ) reseau_vid=$( echo ${1} | awk -F: '{print $8}' )
if [[ -z "${reseau_vid}" ]]; then 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 die "L'identifiant de VLAN n'est pas renseignés.\nSyntaxe attendue : o:<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 fi
if [[ ! "${reseau_vid}" =~ ^[0-9]+$ ]]; then 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" 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"
@ -373,23 +400,28 @@ creeMV()
fi 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" die "${reseau_mode_8021q} n'est pas une valeur connue.\nSyntaxe attendue : o:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)\n"
;; ;;
esac 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 die "${reseau_activ_8021q} n'est pas une valeur connue.\nVoici les deux syntaxes minimales posisbles : \n\tSans VLAN :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:n\n\tAvec VLAN :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)" 5
;; ;;
esac 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 die "${reseau_activ_pont} n'est pas une valeur connue.\nVoici les deux syntaxes minimales posisbles : \n\tSans pont :\n\t\to:<nom interface>:(virtio|e1000):n\n\tAvec pont :\n\t\to:<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
;;
esac
;;
*)
die "${reseau_activ_interface} n'est pas une valeur connue.\nSpécifiez (n|N) pour désactiver le réseau sur la machine virtuelle ou (o|O) pour créer une interface réseau.\nVoici les deux syntaxes minimales posisbles : \n\tSans réseau :\n\t\tn\n\tAvec réseau :\n\t\to:<nom interface>:(virtio|e1000):n" 5
;; ;;
esac 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}") commandes_a_executer+=( "nouvMV reseau ${reseau_activ_interface} ${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 echo "nouvMV reseau ${reseau_activ_interface} ${reseau_nom_interface} ${reseau_type} ${reseau_activ_pont} ${reseau_nom_pont} ${reseau_activ_8021q} ${reseau_mode_8021q} ${reseau_vid}" # Debogage
;; ;;
# "-p") # VFIO PCI # "-p") # VFIO PCI
# echo "pci" # Debogage # echo "pci" # Debogage
@ -400,7 +432,7 @@ creeMV()
echo "sous-volume" # Debogage echo "sous-volume" # Debogage
parametre="${2}" parametre="${2}"
echo "sous-volume parametre=${parametre}" # Debogage echo "sous-volume parametre=${parametre}" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
if [[ ${temoin_S} -ne 1 ]]; then if [[ ${temoin_S} -ne 1 ]]; then
case ${1} in case ${1} in
@ -436,7 +468,7 @@ creeMV()
;; ;;
"-a") # Affichage "-a") # Affichage
echo "Affichage" # Debogage echo "Affichage" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
# (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>])) # (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>]))
@ -493,7 +525,7 @@ creeMV()
;; ;;
'--') # Autre parametres (champ libre) '--') # Autre parametres (champ libre)
echo "parametres" # Debogage echo "parametres" # Debogage
presenceParametre "$#" "$1" presenceParametre "$#" "${1}" "${parametre}"
shift shift
parametres="$@" parametres="$@"
echo "parametres=${parametres}" # Debogage echo "parametres=${parametres}" # Debogage
@ -521,11 +553,11 @@ genCmdIntRzo(){
# Création d'une interface simple # Création d'une interface simple
if [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 2 && "${interface_init}" -eq 1 ]]; then if [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 2 && "${interface_init}" -eq 1 ]]; then
# Commandes à executer au demarrage # Commandes à executer au demarrage
commandes_a_executer_on+=( "ip tuntap add ${interface} mode tap" ) commandes_a_executer_on+=( "${bin_ip} tuntap add ${interface} mode tap" )
commandes_a_executer_on+=( "ip link set ${interface} up" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" )
# Commandes à exectuer à l'arrêt # Commandes à exectuer à l'arrêt
commandes_a_executer_off+=( "ip link del ${interface}" ) commandes_a_executer_off+=( "${bin_ip} link del ${interface}" )
# Réinitialisation des variables témoins # Réinitialisation des variables témoins
pont_init=0 pont_init=0
@ -535,13 +567,13 @@ genCmdIntRzo(){
# Création d'une interface non étiqueté (access) # Création d'une interface non étiqueté (access)
elif [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then elif [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then
# Commandes à executer au demarrage # Commandes à executer au demarrage
commandes_a_executer_on+=( "ip tuntap add ${interface} mode tap" ) commandes_a_executer_on+=( "${bin_ip} tuntap add ${interface} mode tap" )
commandes_a_executer_on+=( "ip link set ${interface} up" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" )
commandes_a_executer_on+=( "bridge vlan del dev ${interface} vid 1 PVID untagged master" ) commandes_a_executer_on+=( "${bin_bridge} vlan del dev ${interface} vid 1 PVID untagged master" )
commandes_a_executer_on+=( "bridge vlan add dev ${interface} vid ${vlan} pvid untagged master" ) commandes_a_executer_on+=( "${bin_bridge} vlan add dev ${interface} vid ${vlan} pvid untagged master" )
# Commandes à exectuer à l'arrêt # Commandes à exectuer à l'arrêt
commandes_a_executer_off+=( "ip link del ${interface}" ) commandes_a_executer_off+=( "${bin_ip} link del ${interface}" )
# Réinitialisation des variables témoins # Réinitialisation des variables témoins
pont_init=0 pont_init=0
@ -550,15 +582,15 @@ genCmdIntRzo(){
# Création d'une interface étiqueté (trunk) # Création d'une interface étiqueté (trunk)
elif [[ "${pont_init}" -eq 1 && "${ieee8021q_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then elif [[ "${pont_init}" -eq 1 && "${ieee8021q_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then
commandes_a_executer_on+=( "ip tuntap add ${interface} mode tap" ) commandes_a_executer_on+=( "${bin_ip} tuntap add ${interface} mode tap" )
commandes_a_executer_on+=( "ip link set ${interface} up" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" )
commandes_a_executer_on+=( "bridge vlan del dev ${interface} vid 1 PVID untagged master" ) commandes_a_executer_on+=( "${bin_bridge} vlan del dev ${interface} vid 1 PVID untagged master" )
for ((id_label_vlan=0 ; "${nb_params_label}" - "${id_label_vlan}" ; id_label_vlan++)); do for ((id_label_vlan=0 ; "${nb_params_label}" - "${id_label_vlan}" ; id_label_vlan++)); do
commandes_a_executer_on+=( "bridge vlan add dev ${interface} vid ${label_vlan[${id_label_vlan}]} tagged master" ) commandes_a_executer_on+=( "${bin_bridge} vlan add dev ${interface} vid ${label_vlan[${id_label_vlan}]} tagged master" )
done done
# Commandes à exectuer à l'arrêt # Commandes à exectuer à l'arrêt
commandes_a_executer_off+=( "ip link del ${interface}" ) commandes_a_executer_off+=( "${bin_ip} link del ${interface}" )
# Réinitialisation des variables témoins # Réinitialisation des variables témoins
pont_init=0 pont_init=0
@ -581,7 +613,7 @@ recupParams(){
# Récupération des données d'après le fichier de configuration # Récupération des données d'après le fichier de configuration
if [ "${nom_param}" == "PONT" ]; then if [ "${nom_param}" == "PONT" ]; then
if [[ ${verif_params} == "vrai" ]]; then if [[ ${verif_params} == "vrai" ]]; then
if [[ $(ip link show "${val_param}" 2> /dev/null) ]]; then if [[ $(${bin_ip} link show "${val_param}" 2> /dev/null) ]]; then
pont="${val_param}" pont="${val_param}"
pont_init=1 pont_init=1
else else
@ -621,7 +653,7 @@ recupParams(){
done done
elif [ "${nom_param}" == "INTERFACE" ]; then elif [ "${nom_param}" == "INTERFACE" ]; then
if [[ ${verif_params} == "vrai" ]]; then if [[ ${verif_params} == "vrai" ]]; then
if [[ ! $(ip link show "${val_param}" 2> /dev/null) ]]; then if [[ ! $(${bin_ip} link show "${val_param}" 2> /dev/null) ]]; then
if [[ "${vlan_init}" -eq 1 || "${vlan_init}" -eq 2 || "${ieee8021q_init}" -eq 1 ]]; then if [[ "${vlan_init}" -eq 1 || "${vlan_init}" -eq 2 || "${ieee8021q_init}" -eq 1 ]]; then
interface="${val_param}" interface="${val_param}"
interface_init=1 interface_init=1

Loading…
Cancel
Save