From 3c6e04f8451b48ba60d977bc9235b18931cbe9c2 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Sun, 11 Feb 2024 11:56:00 +0100 Subject: [PATCH 1/4] =?UTF-8?q?Ajout=20d'une=20v=C3=A9rification=20sur=20l?= =?UTF-8?q?a=20pr=C3=A9sence=20d'un=20tiret=20au=20premier=20caract=C3=A8r?= =?UTF-8?q?e=20du=20param=C3=A8tre=20pass=C3=A9.=20Cela=20permet=20d'?= =?UTF-8?q?=C3=A9viter=20de=20consid=C3=A9rer=20la=20prochaine=20option=20?= =?UTF-8?q?comme=20param=C3=A8tre=20de=20l'option=20courante?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qemu-adm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/qemu-adm b/qemu-adm index 3e4a64a..e21921d 100755 --- a/qemu-adm +++ b/qemu-adm @@ -151,7 +151,7 @@ presenceParametre() local l_nombre_arguments="${1}" 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 - 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 fi } @@ -168,7 +168,7 @@ creeMV() echo "cpu" # Debogage parametre="${2}" echo "cpu parametre=${parametre}" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift if [[ ${temoin_c} -ne 1 ]]; then # :: @@ -201,7 +201,7 @@ creeMV() echo "memoire" # Debogage parametre="${2}" echo "memoire parametre=${parametre}" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift if [[ ${temoin_m} -ne 1 ]]; then commandes_a_executer+=( "nouvMV memoire ${1}") @@ -214,7 +214,7 @@ creeMV() echo "bios" # Debogage parametre="${2}" echo "bios parametre=${parametre}" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift if [[ ${temoin_b} -ne 1 ]]; then case ${1} in @@ -233,7 +233,7 @@ creeMV() "-d") # Disque echo "disque" # Debogage parametre="${2}" - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" echo "disque parametre=${parametre}" # Debogage shift @@ -241,6 +241,7 @@ creeMV() 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 : |(|):(raw|qcow2):)." 5 fi @@ -248,7 +249,6 @@ creeMV() disque_nom="${base_chemin_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 @@ -266,7 +266,7 @@ creeMV() "-i") # Iso echo "iso" # Debogage parametre="${2}" - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" echo "iso parametre=${parametre}" # Debogage shift commandes_a_executer+=( "nouvMV iso ${1}") @@ -274,7 +274,7 @@ creeMV() '-r') # Reseau echo "reseau" # Debogage parametre="${2}" - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" echo "reseau parametre=${parametre}" # Debogage shift @@ -400,7 +400,7 @@ creeMV() echo "sous-volume" # Debogage parametre="${2}" echo "sous-volume parametre=${parametre}" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift if [[ ${temoin_S} -ne 1 ]]; then case ${1} in @@ -436,7 +436,7 @@ creeMV() ;; "-a") # Affichage echo "Affichage" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift # (gtk|(spice:(|):(|unix)[:])) @@ -493,7 +493,7 @@ creeMV() ;; '--') # Autre parametres (champ libre) echo "parametres" # Debogage - presenceParametre "$#" "$1" + presenceParametre "$#" "${1}" "${parametre}" shift parametres="$@" echo "parametres=${parametres}" # Debogage -- 2.30.2 From 521d192e05e1b1ed2d6c8a1cfc7c8f9c20903ba3 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Sun, 11 Feb 2024 12:28:06 +0100 Subject: [PATCH 2/4] =?UTF-8?q?Ajout=20du=20param=C3=A8tre=20obligatoire?= =?UTF-8?q?=20"Type=20de=20disque"=20=C3=A0=20l'option=20"-d"=20+=20contr?= =?UTF-8?q?=C3=B4le=20du=20format=20de=20disque=20renseign=C3=A9=20par=20l?= =?UTF-8?q?'utilisateur.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qemu-adm | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/qemu-adm b/qemu-adm index e21921d..868be65 100755 --- a/qemu-adm +++ b/qemu-adm @@ -70,15 +70,21 @@ nouvMV() esac ;; "disque") - echo "${2}" - if [[ ! -z ${2} ]]; then + echo "${2}" # Debogage + if [[ ! -z "${2}" && "${2}" =~ ^(raw|qcow2)$ ]]; 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} + 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 - echo "-drive file=${1},if=virtio \\" >> ${chemin_mv} ;; "iso") echo "-cdrom ${1} \\" >> ${chemin_mv} @@ -237,13 +243,13 @@ creeMV() echo "disque parametre=${parametre}" # Debogage shift - # |(|):(raw|qcow2):) + # |(|):(raw|qcow2)::(virtio|ide)) 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 : |(|):(raw|qcow2):)." 5 + die "Le disque n'est pas renseigné.\nSyntaxe attendue : |(|):(raw|qcow2)::(virtio|ide))." 5 fi if [[ "$(dirname ${1})" == "." ]];then disque_nom="${base_chemin_mv}/${disque_nom}" @@ -252,16 +258,22 @@ creeMV() 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 : |(|):(raw|qcow2):)." 5 + die "Le format du disque n'est pas renseigné.\nSyntaxe attendue : |(|):(raw|qcow2)::(virtio|ide))." 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 : |(|):(raw|qcow2):)." 5 + die "La capacité du disque n'est pas renseigné.\nSyntaxe attendue : |(|):(raw|qcow2)::(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 + die "Le type du disque n'est pas renseigné.\nSyntaxe attendue : |(|):(raw|qcow2)::(virtio|ide))." 5 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 echo "iso" # Debogage -- 2.30.2 From 1477ef807200aa00dcd8f3703fcf90d174921e34 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Sun, 11 Feb 2024 14:56:06 +0100 Subject: [PATCH 3/4] =?UTF-8?q?Ajout=20du=20param=C3=A8tre=20obligatoire?= =?UTF-8?q?=20"Ajouter=20une=20interface=20r=C3=A9seau"=20afin=20de=20perm?= =?UTF-8?q?ettre=20la=20d=C3=A9sactivation=20totale=20du=20r=C3=A9seau=20d?= =?UTF-8?q?e=20Qemu=20si=20"n"=20ou=20"N"=20est=20sp=C3=A9cifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qemu-adm | 194 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 106 insertions(+), 88 deletions(-) diff --git a/qemu-adm b/qemu-adm index 868be65..86fc262 100755 --- a/qemu-adm +++ b/qemu-adm @@ -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 : - ## :(virtio|e1000): - # :(virtio|e1000):n + ## (n|o::(virtio|e1000):) + # (n|o::(virtio|e1000):n) # # Interface réseau dans un pont - ## :(virtio|e1000):o:: - # :(virtio|e1000):o::n + ## (n|o::(virtio|e1000):o::) + # (n|o::(virtio|e1000):o::n) # # Interface réseau dans un pont avec gestion des VLAN - # :(virtio|e1000):o::o:(t:|a:) - - # :(virtio|e1000):(n|o::(n|o:(t:|a:))) + # (n|o::(virtio|e1000):o::o:(t:|a:)) + # (n|o::(virtio|e1000):(n|o::(n|o:(t:|a:)))) # 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 : :(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 : :(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::(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 : :(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:(virtio|e1000):n\n\tAvec pont :\n\t\t:(virtio|e1000):o::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 : :(virtio|e1000):o::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::(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:(virtio|e1000):o::n\n\tAvec VLAN :\n\t\t:(virtio|e1000):o::o:(t:|a:)" 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::(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::(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::(virtio|e1000):n\n\tAvec pont :\n\t\to::(virtio|e1000):o::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 : :(virtio|e1000):o::o:(t:|a:)" 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::(virtio|e1000):o::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 : :(virtio|e1000):o::o:(t:|a:).\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::(virtio|e1000):o::n\n\tAvec VLAN :\n\t\to::(virtio|e1000):o::o:(t:|a:)" 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 : :(virtio|e1000):o::o:(t:|a:).\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::(virtio|e1000):o::o:(t:|a:)" 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::(virtio|e1000):o::o:(t:|a:).\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::(virtio|e1000):o::o:(t:|a:).\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::(virtio|e1000):o::o:(t:|a:)\n" + ;; + esac ;; *) - die "${reseau_mode_8021q} n'est pas une valeur connue.\nSyntaxe attendue : :(virtio|e1000):o::o:(t:|a:)\n" + die "${reseau_activ_8021q} n'est pas une valeur connue.\nVoici les deux syntaxes minimales posisbles : \n\tSans VLAN :\n\t\to::(virtio|e1000):o::n\n\tAvec VLAN :\n\t\to::(virtio|e1000):o::o:(t:|a:)" 5 ;; esac ;; + *) - die "${reseau_activ_8021q} n'est pas une valeur connue.\nVoici les deux syntaxes minimum posisbles : \n\tSans VLAN :\n\t\t:(virtio|e1000):o::n\n\tAvec VLAN :\n\t\t:(virtio|e1000):o::o:(t:|a:)" 5 + die "${reseau_activ_pont} n'est pas une valeur connue.\nVoici les deux syntaxes minimales posisbles : \n\tSans pont :\n\t\to::(virtio|e1000):n\n\tAvec pont :\n\t\to::(virtio|e1000):o::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:(virtio|e1000):n\n\tAvec pont :\n\t\t:(virtio|e1000):o::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::(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 -- 2.30.2 From 1d657e728b355c8766d95ecd59c93cb6a8ec62da Mon Sep 17 00:00:00 2001 From: ycharbi Date: Sun, 11 Feb 2024 15:06:36 +0100 Subject: [PATCH 4/4] =?UTF-8?q?Ajout=20de=20deux=20variables=20globales=20?= =?UTF-8?q?contenant=20le=20chemin=20des=20binaires=20"ip"=20et=20"bridge"?= =?UTF-8?q?=20afin=20de=20permettre=20leur=20ex=C3=A9cution=20en=20dehors?= =?UTF-8?q?=20de=20"$PATH"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- qemu-adm | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/qemu-adm b/qemu-adm index 86fc262..0a46216 100755 --- a/qemu-adm +++ b/qemu-adm @@ -5,6 +5,8 @@ base_chemin_mv="/tmp/ramdisk/qemu-adm" bin_qemu="/usr/bin/qemu-system-x86_64" 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_production="/etc/systemd/system" nom_script=$(basename $0) @@ -551,11 +553,11 @@ genCmdIntRzo(){ # Création d'une interface simple if [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 2 && "${interface_init}" -eq 1 ]]; then # Commandes à executer au demarrage - commandes_a_executer_on+=( "ip tuntap add ${interface} mode tap" ) - commandes_a_executer_on+=( "ip link set ${interface} up" ) - commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) + commandes_a_executer_on+=( "${bin_ip} tuntap add ${interface} mode tap" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" ) # 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 pont_init=0 @@ -565,13 +567,13 @@ genCmdIntRzo(){ # Création d'une interface non étiqueté (access) elif [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then # Commandes à executer au demarrage - commandes_a_executer_on+=( "ip tuntap add ${interface} mode tap" ) - commandes_a_executer_on+=( "ip link set ${interface} up" ) - commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) - commandes_a_executer_on+=( "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_ip} tuntap add ${interface} mode tap" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" ) + commandes_a_executer_on+=( "${bin_bridge} vlan del dev ${interface} vid 1 PVID untagged master" ) + commandes_a_executer_on+=( "${bin_bridge} vlan add dev ${interface} vid ${vlan} pvid untagged master" ) # 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 pont_init=0 @@ -580,15 +582,15 @@ genCmdIntRzo(){ # Création d'une interface étiqueté (trunk) 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+=( "ip link set ${interface} up" ) - commandes_a_executer_on+=( "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_ip} tuntap add ${interface} mode tap" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} up" ) + commandes_a_executer_on+=( "${bin_ip} link set ${interface} master ${pont}" ) + 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 - 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 # 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 pont_init=0 @@ -611,7 +613,7 @@ recupParams(){ # Récupération des données d'après le fichier de configuration if [ "${nom_param}" == "PONT" ]; 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_init=1 else @@ -651,7 +653,7 @@ recupParams(){ done elif [ "${nom_param}" == "INTERFACE" ]; 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 interface="${val_param}" interface_init=1 -- 2.30.2