Ajout du paramètre obligatoire "Ajouter une interface réseau" afin de permettre la désactivation totale du réseau de Qemu si "n" ou "N" est spécifié

ycharbi
ycharbi 11 months ago
parent 521d192e05
commit 1477ef8072

@ -90,25 +90,28 @@ nouvMV()
echo "-cdrom ${1} \\" >> ${chemin_mv}
;;
"reseau")
if [[ "${4}" != "faux" ]]; then
echo "#PONT=${4}" >> ${chemin_mv}
if [[ "${5}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv}
if [[ "${1}" != "faux" ]]; then
if [[ "${5}" != "faux" ]]; then
echo "#PONT=${5}" >> ${chemin_mv}
if [[ "${6}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv}
fi
fi
case "${7}" in
"a")
echo "#VLAN=${8}" >> ${chemin_mv}
;;
"t")
echo "#8021Q=${8}" >> ${chemin_mv}
;;
esac
if [[ "${4}" != "faux" ]]; then
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
case "${6}" in
"a")
echo "#VLAN=${7}" >> ${chemin_mv}
;;
"t")
echo "#8021Q=${7}" >> ${chemin_mv}
;;
esac
if [[ "${4}" != "faux" ]]; then
echo "#INTERFACE=${1}" >> ${chemin_mv}
fi
echo "-device ${2},netdev=${1} -netdev tap,id=${1},ifname=${1},script=no,downscript=no \\" >> ${chemin_mv}
;;
"kvm")
echo "-enable-kvm \\" >> ${chemin_mv}
@ -290,18 +293,19 @@ creeMV()
echo "reseau parametre=${parametre}" # Debogage
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 :
## <nom interface>:(virtio|e1000):<activation pont>
# <nom interface>:(virtio|e1000):n
## (n|o:<nom interface>:(virtio|e1000):<activation pont>)
# (n|o:<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
## (n|o:<nom interface>:(virtio|e1000):o:<nom pont>:<activation 8021q>)
# (n|o:<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>)))
# (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>))))
# Initialisation des variables
reseau_nom_interface="faux"
@ -312,96 +316,110 @@ creeMV()
reseau_mode_8021q="faux"
reseau_vid="faux"
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
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_type} in
"virtio")
reseau_type="virtio-net-pci"
;;
"e1000")
;;
*)
die "Le type d'interface réseau n'a pas une valeur connue.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5
;;
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
case ${reseau_activ_interface} in
"n"|"N")
reseau_activ_interface="faux"
;;
"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
reseau_nom_interface=$( echo ${1} | awk -F: '{print $2}' )
if [[ -z "${reseau_nom_interface}" ]]; then
die "L'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):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
reseau_type=$( echo ${1} | awk -F: '{print $3}' )
if [[ -z "${reseau_type}" ]]; then
die "Le type d'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
fi
case ${reseau_activ_8021q} in
case ${reseau_type} in
"virtio")
reseau_type="virtio-net-pci"
;;
"e1000")
;;
*)
die "Le type d'interface réseau n'a pas une valeur connue.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
;;
esac
reseau_activ_pont=$( echo ${1} | awk -F: '{print $4}' )
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 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
case ${reseau_activ_pont} 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
reseau_nom_pont=$( echo ${1} | awk -F: '{print $5}' )
if [[ -z "${reseau_nom_pont}" ]]; then
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
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
reseau_activ_8021q=$( echo ${1} | awk -F: '{print $6}' )
if [[ -z "${reseau_activ_8021q}" ]]; then
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
case ${reseau_activ_8021q} in
"n"|"N")
;;
"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"
"o"|"O")
reseau_mode_8021q=$( echo ${1} | awk -F: '{print $7}' )
if [[ -z "${reseau_mode_8021q}" ]]; then
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
case ${reseau_mode_8021q} in
"t"|"T")
reseau_vid=$( echo ${1} | awk -F: '{print $8}' )
echo "reseau_vid=${reseau_vid}" # Debogage
if [[ -z "${reseau_vid}" ]]; then
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
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 $8}' )
if [[ -z "${reseau_vid}" ]]; then
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
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 : o:<nom interface>:(virtio|e1000):o:<nom pont>:o:(t:<VIDs>|a:<VID>)\n"
;;
esac
;;
*)
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_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
;;
*)
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_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_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_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
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
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_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
# echo "pci" # Debogage

Loading…
Cancel
Save