#1 Le 09/06/2020, à 03: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, à 03:05)
Hors ligne
#2 Le 09/06/2020, à 09: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