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} 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}
@ -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,14 +316,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")
@ -328,42 +341,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
@ -373,9 +386,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"
@ -385,23 +398,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

Loading…
Cancel
Save