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 1 year ago
parent 521d192e05
commit 1477ef8072

@ -90,25 +90,28 @@ nouvMV()
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}
echo "#VLAN=0" >> ${chemin_mv} if [[ "${6}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv}
fi
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 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") "kvm")
echo "-enable-kvm \\" >> ${chemin_mv} echo "-enable-kvm \\" >> ${chemin_mv}
@ -290,18 +293,19 @@ creeMV()
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"
@ -312,96 +316,110 @@ 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_nom_interface}" ]]; then if [[ -z "${reseau_activ_interface}" ]]; then
die "L'interface réseau n'est pas renseigné.\nSyntaxe minimum attendue : <nom interface>:(virtio|e1000):n." 5 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
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 fi
case ${reseau_type} in case ${reseau_activ_interface} 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
"n"|"N") "n"|"N")
reseau_activ_interface="faux"
;; ;;
"o"|"O") "o"|"O")
reseau_nom_pont=$( echo ${1} | awk -F: '{print $4}' ) reseau_nom_interface=$( echo ${1} | awk -F: '{print $2}' )
if [[ -z "${reseau_nom_pont}" ]]; then if [[ -z "${reseau_nom_interface}" ]]; 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 "L'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
fi fi
reseau_activ_8021q=$( echo ${1} | awk -F: '{print $5}' ) reseau_type=$( echo ${1} | awk -F: '{print $3}' )
if [[ -z "${reseau_activ_8021q}" ]]; then if [[ -z "${reseau_type}" ]]; 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 "Le type d'interface réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):n." 5
fi 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") "n"|"N")
;; ;;
"o"|"O") "o"|"O")
reseau_mode_8021q=$( echo ${1} | awk -F: '{print $6}' ) reseau_nom_pont=$( echo ${1} | awk -F: '{print $5}' )
if [[ -z "${reseau_mode_8021q}" ]]; then if [[ -z "${reseau_nom_pont}" ]]; 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 nom du pont réseau n'est pas renseigné.\nSyntaxe minimale attendue : o:<nom interface>:(virtio|e1000):o:<nom pont>:n" 5
fi fi
case ${reseau_mode_8021q} in
"t"|"T") reseau_activ_8021q=$( echo ${1} | awk -F: '{print $6}' )
reseau_vid=$( echo ${1} | awk -F: '{print $7}' ) if [[ -z "${reseau_activ_8021q}" ]]; then
echo "reseau_vid=${reseau_vid}" # Debogage 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
if [[ -z "${reseau_vid}" ]]; then fi
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 case ${reseau_activ_8021q} in
fi "n"|"N")
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") "o"|"O")
reseau_vid=$( echo ${1} | awk -F: '{print $7}' ) reseau_mode_8021q=$( echo ${1} | awk -F: '{print $7}' )
if [[ -z "${reseau_vid}" ]]; then if [[ -z "${reseau_mode_8021q}" ]]; 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 "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
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 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 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 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 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

Loading…
Cancel
Save