@ -84,8 +84,11 @@ nouvMV()
echo "-cdrom ${1} \\" >> ${chemin_mv}
echo "-cdrom ${1} \\" >> ${chemin_mv}
;;
;;
"reseau")
"reseau")
if [[ "${4}" != "false " ]]; then
if [[ "${4}" != "faux " ]]; then
echo "#PONT=${4}" >> ${chemin_mv}
echo "#PONT=${4}" >> ${chemin_mv}
if [[ "${5}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv}
fi
fi
fi
case "${6}" in
case "${6}" in
"a")
"a")
@ -95,13 +98,33 @@ nouvMV()
echo "#8021Q=${7}" >> ${chemin_mv}
echo "#8021Q=${7}" >> ${chemin_mv}
;;
;;
esac
esac
echo "#INTERFACE=${1}" >> ${chemin_mv}
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}
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}
;;
;;
"series")
echo "-serial mon:stdio \\" >> ${chemin_mv}
;;
"spice")
if [[ "${3}" != "faux" ]]; then
echo "-object secret,id=spice-mdp,data=${4} -spice addr=${1},port=${2},password-secret=spice-mdp \\" >> ${chemin_mv}
else
echo "-spice addr=${1},port=${2},disable-ticketing=on \\" >> ${chemin_mv}
fi
;;
"gtk")
echo "-vga virtio -display sdl,gl=on \\" >> ${chemin_mv}
;;
"ecran")
if [[ ${1} == "faux" ]]; then
echo "-display none \\" >> ${chemin_mv}
fi
;;
"parametres")
"parametres")
echo "$@ \\" >> ${chemin_mv}
echo "$@ \\" >> ${chemin_mv}
;;
;;
@ -269,13 +292,13 @@ creeMV()
# <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=false
reseau_nom_interface="faux"
reseau_type=false
reseau_type="faux"
reseau_activ_pont=false
reseau_activ_pont="faux"
reseau_nom_pont=false
reseau_nom_pont="faux"
reseau_activ_8021q=false
reseau_activ_8021q="faux"
reseau_mode_8021q=false
reseau_mode_8021q="faux"
reseau_vid=false
reseau_vid="faux"
reseau_nom_interface=$( echo ${1} | awk -F: '{print $1}' )
reseau_nom_interface=$( echo ${1} | awk -F: '{print $1}' )
if [[ -z "${reseau_nom_interface}" ]]; then
if [[ -z "${reseau_nom_interface}" ]]; then
@ -368,18 +391,18 @@ creeMV()
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_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_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
# -device vfio-pci,host=0b:10.0,id=hostdev0,bus=pci.0,addr=0xa
# # -device vfio-pci,host=0b:10.0,id=hostdev0,bus=pci.0,addr=0xa
shift
# shift
;;
# ;;
"-s ") # Sous-volume
"-S ") # Sous-volume
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"
shift
shift
if [[ ${temoin_s } -ne 1 ]]; then
if [[ ${temoin_S } -ne 1 ]]; then
case ${1} in
case ${1} in
"btrfs"|"BTRFS")
"btrfs"|"BTRFS")
if [[ ! $(command -v btrfs) ]]; then
if [[ ! $(command -v btrfs) ]]; then
@ -388,19 +411,71 @@ creeMV()
commandes_init_a_executer+=( "initEnv sousvolume ${1}" )
commandes_init_a_executer+=( "initEnv sousvolume ${1}" )
;;
;;
esac
esac
temoin_s =1
temoin_S =1
else
else
die "L'option ${1} a déjà été renseignée." 3
die "L'option ${1} a déjà été renseignée." 3
fi
fi
;;
;;
"-k") # KVM
"-k") # KVM
echo "KVM"
echo "KVM" # Debogage
if [[ ${temoin_k} -ne 1 ]]; then
if [[ ${temoin_k} -ne 1 ]]; then
commandes_a_executer+=( "nouvMV kvm")
commandes_a_executer+=( "nouvMV kvm")
temoin_k=1
temoin_k=1
else
else
die "L'option ${1} a déjà été renseignée." 3
die "L'option ${1} a déjà été renseignée." 3
fi
fi
;;
"-s") # Séries
echo "Séries" # Debogage
if [[ ${temoin_s} -ne 1 ]]; then
commandes_a_executer+=( "nouvMV series")
temoin_s=1
else
die "L'option ${1} a déjà été renseignée." 3
fi
;;
"-a") # Affichage
echo "Affichage" # Debogage
presenceParametre "$#" "$1"
shift
# (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>]))
affichage_protocole=$( echo ${1} | awk -F: '{print $1}' )
if [[ -z "${affichage_protocole}" ]]; then
die "Le protocole de gestion de l'affichage n'est pas renseigné.\nSyntaxe attendue : (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>]))." 5
fi
case ${affichage_protocole} in
"spice"|"SPICE")
affichage_spice_adresse_unix=$( echo ${1} | awk -F: '{print $2}' )
if [[ -z "${affichage_spice_adresse_unix}" ]]; then
die "L'adresse IPv4 ou le chemin unix n'est pas renseigné.\nSyntaxe attendue : (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>]))." 5
fi
affichage_spice_port_unix=$( echo ${1} | awk -F: '{print $3}' )
if [[ -z "${affichage_spice_port_unix}" ]]; then
die "Le port ou le mot clé unix n'est pas renseigné.\nSyntaxe attendue : (gtk|(spice:(<adresse ecoute>|<chemin socket>):(<tcp port ecoute>|unix)[:<mot de passe>]))." 5
fi
affichage_spice_activ_mot_de_passe="vrai"
affichage_spice_mot_de_passe=$( echo ${1} | awk -F: '{print $4}' )
if [[ -z "${affichage_spice_mot_de_passe}" ]]; then
affichage_spice_activ_mot_de_passe="faux"
fi
commandes_a_executer+=( "nouvMV spice ${affichage_spice_adresse_unix} ${affichage_spice_port_unix} ${affichage_spice_activ_mot_de_passe} ${affichage_spice_mot_de_passe}")
;;
"gtk"|"GTK")
commandes_a_executer+=( "nouvMV gtk")
;;
"aucun"|"AUCUN")
commandes_a_executer+=( "nouvMV ecran faux")
;;
*)
die "${affichage_protocole} n'est pas une valeur connue.\nSyntaxe attendue : (gtk|((vnc|spice):<adresse ecoute>:<port ecoute>))." 5
;;
esac
;;
;;
# "-f") # Force
# "-f") # Force
# # Permet d'eviter la demande de confirmation de création
# # Permet d'eviter la demande de confirmation de création
@ -443,8 +518,22 @@ creeMV()
}
}
genCmdIntRzo(){
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 à exectuer à l'arrêt
commandes_a_executer_off+=( "ip link del ${interface}" )
# Réinitialisation des variables témoins
pont_init=0
vlan_init=0
interface_init=0
# Création d'une interface non étiqueté (access)
# Création d'une interface non étiqueté (access)
if [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then
el if [[ "${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+=( "ip tuntap add ${interface} mode tap" )
commandes_a_executer_on+=( "ip link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} up" )
@ -460,7 +549,7 @@ genCmdIntRzo(){
interface_init=0
interface_init=0
# 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+=( "ip tuntap add ${interface} mode tap" )
commandes_a_executer_on+=( "ip link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} up" )
commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" )
commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" )
@ -510,6 +599,8 @@ recupParams(){
else
else
die "Le paramètre \"#PONT=votrePont\" est manquant dans le fichier ${chemin_mv}." 9
die "Le paramètre \"#PONT=votrePont\" est manquant dans le fichier ${chemin_mv}." 9
fi
fi
elif [[ "${val_param}" -eq 0 ]]; then
vlan_init=2
else
else
die "Le VLAN \"${val_param}\" n'est pas un entier compris entre 1 et 4094. Veuillez verifier le fichier ${chemin_mv}." 9
die "Le VLAN \"${val_param}\" n'est pas un entier compris entre 1 et 4094. Veuillez verifier le fichier ${chemin_mv}." 9
fi
fi
@ -531,7 +622,7 @@ recupParams(){
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 [[ ! $(ip link show "${val_param}" 2> /dev/null) ]]; then
if [[ "${vlan_init}" -eq 1 || "${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
else
else