Compare commits

..

3 Commits

Author SHA1 Message Date
Nicolas MORIN 9b1030bf45 Ajout de la gestion des interfaces réseaux dans un pont simple
11 months ago
Nicolas MORIN 7c91541a83 Changement de lettre pour l'option sous-volume
11 months ago
Nicolas MORIN 896c471be7 Désactivation de l'option -p
11 months ago

@ -84,8 +84,11 @@ nouvMV()
echo "-cdrom ${1} \\" >> ${chemin_mv}
;;
"reseau")
if [[ "${4}" != "false" ]]; then
if [[ "${4}" != "faux" ]]; then
echo "#PONT=${4}" >> ${chemin_mv}
if [[ "${5}" == "n" ]]; then
echo "#VLAN=0" >> ${chemin_mv}
fi
fi
case "${6}" in
"a")
@ -95,13 +98,33 @@ nouvMV()
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}
;;
"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")
echo "$@ \\" >> ${chemin_mv}
;;
@ -269,13 +292,13 @@ creeMV()
# <nom interface>:(virtio|e1000):(n|o:<nom pont>:(n|o:(t:<VIDs>|a:<VID>)))
# Initialisation des variables
reseau_nom_interface=false
reseau_type=false
reseau_activ_pont=false
reseau_nom_pont=false
reseau_activ_8021q=false
reseau_mode_8021q=false
reseau_vid=false
reseau_nom_interface="faux"
reseau_type="faux"
reseau_activ_pont="faux"
reseau_nom_pont="faux"
reseau_activ_8021q="faux"
reseau_mode_8021q="faux"
reseau_vid="faux"
reseau_nom_interface=$( echo ${1} | awk -F: '{print $1}' )
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}")
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
echo "pci" # Debogage
# -device vfio-pci,host=0b:10.0,id=hostdev0,bus=pci.0,addr=0xa
shift
;;
"-s") # Sous-volume
# "-p") # VFIO PCI
# echo "pci" # Debogage
# # -device vfio-pci,host=0b:10.0,id=hostdev0,bus=pci.0,addr=0xa
# shift
# ;;
"-S") # Sous-volume
echo "sous-volume" # Debogage
parametre="${2}"
echo "sous-volume parametre=${parametre}" # Debogage
presenceParametre "$#" "$1"
shift
if [[ ${temoin_s} -ne 1 ]]; then
if [[ ${temoin_S} -ne 1 ]]; then
case ${1} in
"btrfs"|"BTRFS")
if [[ ! $(command -v btrfs) ]]; then
@ -388,19 +411,71 @@ creeMV()
commandes_init_a_executer+=( "initEnv sousvolume ${1}" )
;;
esac
temoin_s=1
temoin_S=1
else
die "L'option ${1} a déjà été renseignée." 3
fi
;;
"-k") # KVM
echo "KVM"
echo "KVM" # Debogage
if [[ ${temoin_k} -ne 1 ]]; then
commandes_a_executer+=( "nouvMV kvm")
temoin_k=1
else
die "L'option ${1} a déjà été renseignée." 3
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
# # Permet d'eviter la demande de confirmation de création
@ -443,8 +518,22 @@ creeMV()
}
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)
if [[ "${pont_init}" -eq 1 && "${vlan_init}" -eq 1 && "${interface_init}" -eq 1 ]]; then
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" )
@ -510,6 +599,8 @@ recupParams(){
else
die "Le paramètre \"#PONT=votrePont\" est manquant dans le fichier ${chemin_mv}." 9
fi
elif [[ "${val_param}" -eq 0 ]]; then
vlan_init=2
else
die "Le VLAN \"${val_param}\" n'est pas un entier compris entre 1 et 4094. Veuillez verifier le fichier ${chemin_mv}." 9
fi
@ -531,7 +622,7 @@ recupParams(){
elif [ "${nom_param}" == "INTERFACE" ]; then
if [[ ${verif_params} == "vrai" ]]; 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_init=1
else

Loading…
Cancel
Save