vlotho

Untitled

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