vlotho

Untitled

Jun 22nd, 2020
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.62 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. #
  4. #    Script réalisé dans le cadre du projet 3 de la formation AIC
  5. #    d'Openclassrooms par Dalmas Gilles
  6. #
  7. #    Version 0.4
  8. #
  9. #
  10. #set -xv
  11. title="Gestion des comptes sur les postes des salles Abeille et Baobab"
  12.  
  13.  
  14. # Demande le compte/password administrateur des postes afin de pouvoir manipuler les données des postes distant
  15. # menu principal
  16. set_menu_choice()
  17. {
  18.     choice=$(whiptail --title "$title"  --menu "Choisir une option" 25 90 16 \
  19.             "Initialiser" "Configure les noms d'hôtes et ajoute les comptes utilisateurs." \
  20.             "Réinitialiser" "Supprime toutes les données utilisateur et réinitialise le nom d'hôte." \
  21.             "Quitter" "Sortir du programme" 3>&1 1>&2 2>&3)
  22.  
  23.     case $choice in
  24. # Configuration du hostname et création des utilisateurs sur les postes distant
  25.             "Initialiser")
  26.                 {
  27.                       for i in 2; do
  28.                           ssh -q -o "StrictHostKeyChecking no" gilles@192.168.100."$i" exit &> /dev/null
  29.                           ret_code=$?
  30.  
  31.                           if [ $ret_code != 0 ] && [ $ret_code != 255 ]; then
  32.                               whiptail --title "Connexion aux postes client" --msgbox "La connexion pour cet utilisateur a échoué. code d'erreur $ret_code." 10 78
  33.                   exit $ret_code
  34.               else :
  35.                               checkuser=$(ssh -q -o "StrictHostKeyChecking no" gilles@192.168.100."$i" getent passwd stagiaire"$i")
  36.                               if grep -sq ^stagiaire"$i" <<< "$checkuser"; then     # Vérifie si l'utilisateur existe déjà
  37.                                   whiptail --title "Vérification de la présence des utlisateurs" --msgbox "L'utilisateur existe déjà sur le poste" 10 78
  38.                   sleep
  39.                               else :
  40.                                   ssh gilles@192.168.100."$i" hostname PosteDuStagiaire"$i" && ssh gilles@192.168.100."$i" useradd stagiaire"$i"
  41.                               fi
  42.                           fi
  43.                       done
  44.                       for i in 2; do
  45.                           ssh -q -o "StrictHostKeyChecking no" gilles@192.168.101."$i" exit &> /dev/null
  46.                           ret_code=$?
  47.  
  48.                           if [ $ret_code != 0 ] && [ $ret_code != 255 ]; then
  49.                               whiptail --title "Connexion aux postes client" --msgbox "La connexion pour cet utilisateur a échoué. code d'erreur $ret_code." 10 78
  50.                   exit $ret_code
  51.               else :
  52.                               checkuser=$(ssh -q -o "StrictHostKeyChecking no" gilles@192.168.101."$i" getent passwd stagiaire"$i")
  53.                               if grep -sq ^stagiaire"$i" <<< "$checkuser"; then     # Vérifie si l'utilisateur existe déjà
  54.                                   whiptail --title "Vérification de la présence des utlisateurs" --msgbox "L'utilisateur existe déjà sur le poste" 10 78
  55.                   sleep
  56.                               else :
  57.                                   ssh gilles@192.168.101."$i" hostname PosteDuStagiaire"$i" && ssh gilles@192.168.101."$i" useradd stagiaire"$i"
  58.                               fi
  59.                           fi
  60.                       done
  61.                       sleep 1
  62.                       echo "$i"
  63.                 } | whiptail --title "Initialisation des postes" --gauge "Création des utilisateurs et paramétrage des noms d'hôtes en cours" 6 60 100
  64.                 whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu" 10 78
  65.             exitstatus=$?
  66.             if [ "$exitstatus" == 0 ]; then
  67.                 set_menu_choice
  68.             fi
  69.            ;;
  70. # Suppression des données utilisateurs
  71.            "Réinitialiser")
  72.                 {
  73.                    for i in 2; do
  74.                        ssh -q -o "StrictHostKeyChecking no" gilles@192.168.100."$i" exit &> /dev/null
  75.                        ret_code=$?
  76.  
  77.                        if [ $ret_code != 0 ] && [ $ret_code != 255 ]; then
  78.                            whiptail --title "Connexion aux postes client" --msgbox "La connexion pour cet utilisateur a échoué. code d'erreur $ret_code." 10 78
  79.                exit $ret_code
  80.                else :
  81.                    checkuser=$(ssh -q -o "StrictHostKeyChecking no" gilles@192.168.100."$i" getent passwd ^stagiaire"$i")
  82.                            if grep -q "^stagiaire"$i <<< "$checkuser"; then
  83.                                ssh gilles@192.168.100."$i" hostname Default && ssh gilles@192.168.100."$i" userdel -f stagiaire"$i"
  84.                            else :
  85.                                break 2
  86.                            fi
  87.                        fi
  88.                sleep 1
  89.                echo "$i"
  90.                    done
  91.                    for i in 2; do
  92.                        ssh -q -o "StrictHostKeyChecking no" gilles@192.168.101."$i" exit &> /dev/null
  93.                        ret_code=$?
  94.  
  95.                        if [ $ret_code != 0 ] && [ $ret_code != 255 ]; then
  96.                            whiptail --title "Connexion aux postes client" --msgbox "La connexion pour cet utilisateur a échoué. code d'erreur $ret_code." 10 78
  97.                exit $ret_code
  98.                else :
  99.                    checkuser=$(ssh -q -o "StrictHostKeyChecking no" gilles@192.168.101."$i" getent passwd ^stagiaire"$i")
  100.                            if grep -sq ^stagiaire"$i" <<< "$checkuser"; then
  101.                                ssh gilles@192.168.101."$i" hostname Default && ssh gilles@192.168.101."$i" userdel -f stagiaire"$i"
  102.                            else :
  103.                                break 2
  104.                            fi
  105.                        fi
  106.                sleep 1
  107.                echo "$i"
  108.                    done
  109.                } | whiptail  --title "Réinitialisation des postes" --gauge "suppression des comptes utilisateurs et remise par défaut des noms d'hôtes" 6 60 100
  110.                whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu" 10 78
  111.            exitstatus=$?
  112.            if [ "$exitstatus" == 0 ]; then
  113.                 set_menu_choice
  114.            fi
  115.             ;;
  116.             "Quitter")
  117.                exit
  118.             ;;
  119.     esac
  120. }
  121.  
  122. # Affiche une boite de dialogue présentant le script et installe les prérequis en arrière plan
  123. whiptail --title "$title" \
  124.       --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
  125. exitstatus=$?
  126. if [ "$exitstatus" == 1 ]; then
  127.    required=$(dpkg -l | grep -E '^ii +whiptail')
  128.    if ! grep -q whiptail <<<"$required"; then
  129.       apt-get install --force-yes whiptail
  130.    fi
  131. else :
  132.    set_menu_choice
  133. fi
Add Comment
Please, Sign In to add comment