Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2020, à 04:05

vlotho

Whiptail Gauge, non affiché à l'écran.

Salut,

Petit soucis avec ce module, rien ne s'affiche à l'écran et je ne vois pas pourquoi.
J'ai essayé de modifier pas mal mes boucle et mes test à l’intérieur mais je ne pense pas que ça viennent de là.
le code dans les cases n'est pas pas bon, j'ai essayé pas mal de choses mais je ne penses pas que ça viennent de là.
Pourtant quand je l’exécute, la fenêtre s'affichent mais pas les choix disponibles.
Aucune erreur non plus lors de l'execution.

#!/bin/bash
#
#
#    Script réalisé dans le cadre du projet 3 de la formation AIC
#    d'Openclassrooms par Dalmas Gilles
#
#
#noir='\e[0;30m'
#gris='\e[1;30m'
#rougefonce='\e[0;31m'
#rose='\e[1;31m'
#vertfonce='\e[0;32m'
#vertclair='\e[1;32m'
#orange='\e[0;33m'
#jaune='\e[1;33m'
#bleufonce='\e[0;34m'
#bleuclair='\e[1;34m'
#violetfonce='\e[0;35m'
#violetclair='\e[1;35m'
#cyanfonce='\e[0;36m'
#cyanclair='\e[1;36m'
#grisclair='\e[0;37m'
#blanc='\e[1;37m'
#neutre='\e[0;m'


title="Gestion des comptes sur les postes des salles Abeille et Baobab"


# Demande le compte/password administrateur des postes afin de pouvoir manipuler les données des postes distant
# le login/pass doit être identique entre tous les postes 
admininput() {
   admin=$(whiptail --inputbox "Veuillez saisir le compte administrateur des postes" 8 78 --title "$title" 3>&1 1>&2 2>&3)
   exitstatus=$?
   if [ "$exitstatus" = 0 ] ; then
      password=$(whiptail --passwordbox "ainsi que son mot de passe\n (les caractères ne s'afficheront pas à l'écran)" 8 78 --title "$title" 3>&1 1>&2 2>&3)
      exitstatus=$?
      if [ "$exitstatus" = 0 ] ; then
         set_menu_choice
      else
         exit
      fi
   else
      exit
   fi
}

# menu principal
set_menu_choice()
{
   choice=$(whiptail --title "$title" \
            --menu "Choisissez une option" 25 78 16 \
            "Initialiser" "Configure les noms d'hôtes et ajouter les comptes utilisateurs." \
            "Réinitialiser" "Supprime de façon définitive toutes les données utilisateur sur le poste et réinitialise le nom d'hôte." \
            "Quitter" 3>&1 1>&2 2>&3)

   case "$choice" in
# Configuration du hostname et création des utilisateurs sur les postes distant
           "Initialiser")
               {
                     for i in 'seq 2 10 52'; do    # Pour le réseau Abeille
                        checkuser=$(sshpass -p "$password" ssh "$admin@192.168.100.$i" grep -c "^stagiaire$i" /etc/passwd)
                           if [ "$checkuser" == 1 ]; then     # Vérifie si l'utilisateur existe déjà
                              break 2
                           else
                              hostname PosteDuStagiaire"$i" && useradd stagiaire"$i"
                           fi
                     done
                     for i in 'seq 2 10 52'; do    # Pour le réseau Baobab
                        checkuser=$(sshpass -p "$password" ssh "$admin@192.168.101.$i" grep -c "^stagiaire$i" /etc/passwd)
                           if [ "$checkuser" == 1 ]; then
                              break 2
                           else
                              hostname PosteDuStagiaire"$i" && useradd stagiaire"$i"
                           fi
                     done
                     sleep 1
                     echo "$i"
                     i=$(i + 1)
               } | whiptail --title "Initialisation des postes" --gauge "Création des utilisateurs et paramétrage des noms d'hôtes en cours" 6 60 0
               whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu"
           ;;
# Suppression des données utilisateurs
           "Réinitialiser")
               for i in 'seq 2 10 52'; do
                     checkuser=$(sshpass -p "$password" ssh "$admin@192.168.100.$i" grep -c "^stagiaire$i" /etc/passwd)
                     if [ "$checkuser" == 1 ]; then
                        userdel -f "stagiaire$i"
                     else
                        break 2
                     fi
               done
               for i in 'seq 2 10 52'; do
                     checkuser=$(sshpass -p "$password" ssh "$admin@192.168.101.$i" grep -c "^stagiaire$i" /etc/passwd)
                     if [ "$checkuser" == 1 ]; then
                        userdel -f "stagiaire$i"
                     else
                        break 2
                     fi
               done
               whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu"
           ;;
           "Quitter")
               exit
           ;;
   esac
}

# Affiche une boite de dialogue présentant le script et installe les prérequis en arrière plan
whiptail --title "$title" \
      --msgbox "Ceci est un utilitaire dédié à l'initialisation ou la réinitialisation de chaque poste des salles Abeille et Baobab.\nVous devez appuyer sur OK pour continuer." 10 78
exitstatus=$?
if [ "$exitstatus" = 0 ]; then
   required=$(dpkg -l | grep -E '^ii +sshpass' ; dpkg -l | grep -E '^ii +whiptail')
   if ! grep -q sshpass <<<"$required"; then
      apt-get install --force-yes sshpass
   elif ! grep -q whiptail <<<"$required"; then
      apt-get install --force-yes whiptail
   fi
   admininput
fi

Dernière modification par vlotho (Le 09/06/2020, à 04:05)

Hors ligne

#2 Le 09/06/2020, à 10:11

kamaris

Re : Whiptail Gauge, non affiché à l'écran.

Ça ne vient probablement pas de là, mais tu as un i=$(i + 1) qui devrait surement être un ((i++)).

Par ailleurs, pourquoi testes-tu parfois directement tes retours de commande, et d'autres fois indirectement ?
Exemple :

admin=$(whiptail --inputbox "Veuillez saisir le compte administrateur des postes" 8 78 --title "$title" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ "$exitstatus" = 0 ] ; then …

pourrait être

if admin=$(whiptail --inputbox "Veuillez saisir le compte administrateur des postes" 8 78 --title "$title" 3>&1 1>&2 2>&3); then …

Hors ligne