diff --git a/qemu-adm b/qemu-adm index b9629ee..3e4a64a 100755 --- a/qemu-adm +++ b/qemu-adm @@ -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 - 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} ;; "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() # :(virtio|e1000):(n|o::(n|o:(t:|a:))) # 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 @@ -394,13 +417,65 @@ creeMV() 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:(|):(|unix)[:])) + + 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:(|):(|unix)[:]))." 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:(|):(|unix)[:]))." 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:(|):(|unix)[:]))." 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)::))." 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" ) @@ -460,7 +549,7 @@ genCmdIntRzo(){ interface_init=0 # 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 link set ${interface} up" ) commandes_a_executer_on+=( "ip link set ${interface} master ${pont}" ) @@ -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