vlotho

Untitled

May 3rd, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.78 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. #
  8. noir='\e[0;30m'
  9. gris='\e[1;30m'
  10. rougefonce='\e[0;31m'
  11. rose='\e[1;31m'
  12. vertfonce='\e[0;32m'
  13. vertclair='\e[1;32m'
  14. orange='\e[0;33m'
  15. jaune='\e[1;33m'
  16. bleufonce='\e[0;34m'
  17. bleuclair='\e[1;34m'
  18. violetfonce='\e[0;35m'
  19. violetclair='\e[1;35m'
  20. cyanfonce='\e[0;36m'
  21. cyanclair='\e[1;36m'
  22. grisclair='\e[0;37m'
  23. blanc='\e[1;37m'
  24. neutre='\e[0;m'
  25.  
  26.  
  27. title="Gestion des comptes sur les postes des salles Abeille et Baobab"
  28.  
  29. required=$(dpkg -l | egrep '^ii +sshpass' ; dpkg -l | egrep '^ii +whiptail')
  30. if [ ! $(grep sshpass <<< $required) ]; then
  31.     apt-get install --force-yes sshpass
  32. else if [ ! $(grep whiptail <<< $required) ]; then
  33.     apt-get install --force-yes whiptail
  34. fi
  35.    
  36. # Affiche une boite de dialogue présentant le script et installe les prérequis en arrière plan
  37. whiptail --title "$title" \
  38.       --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
  39. exitstatus=$?
  40. if [ $exitstatus=0 ]; then
  41.     admininput
  42. fi
  43.  
  44. # Demande le compte/password administrateur des postes afin de pouvoir manipuler les données des postes distant
  45. # le login/pass doit être identique entre tous les postes
  46. admininput() {
  47.    admin=whiptail --inputbox "Veuillez saisir le compte administrateur des postes" 8 78 --title "$title" 3>&1 1>&2 2>&3
  48.    exitstatus=$?
  49.    if [ $exitstatus=0 ]; then
  50.       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
  51.       exitstatus=$?
  52.       if [ $exitstatus=0 ]; then
  53.          set_menu_choice
  54.       else
  55.          exit
  56.       fi
  57.    else
  58.       exit
  59.    fi
  60. }
  61.  
  62. # menu principal
  63. set_menu_choice()
  64. {
  65.    choice=whiptail --title "$title" \
  66.             --menu "Choisissez une option" 25 78 16 \
  67.             "Initialiser" "Configure les noms d'hôtes et ajouter les comptes utilisateurs." \
  68.             "Reinitialiser" "Supprime de façon définitive toutes les données utilisateur sur le poste et réinitialise le nom d'hôte." \
  69.             "Quitter" 3>&1 1>&2 2>&3
  70.  
  71.    case $choice in
  72. # Configuration du hostname et création des utilisateurs sur les postes distant
  73.             Initialiser)
  74.                {
  75.                   i=0
  76.                   while (true); do
  77.                      for ((i=1;i<6;i=i+1)); do    # Pour le réseau Abeille
  78.                         checkuser=sshpass -p $password ssh $admin@192.168.100.$i grep -c '^stagiaire$i' /etc/passwd
  79.                            if [ $chekuser=1 ]; then     # Vérifie si l'utilisateur existe déjà
  80.                               break 2
  81.                            else
  82.                               hostname PosteDuStagiaire$i && useradd stagiaire$i
  83.                            fi
  84.                      done
  85.                      for ((i=1;i<6;i=i+1)); do    # Pour le réseau Baobab
  86.                         checkuser=sshpass -p $password ssh $admin@192.168.101.$i grep -c '^stagiaire$i' /etc/passwd
  87.                            if [ $chekuser=1 ]; then
  88.                               break 2
  89.                            else
  90.                               hostname PosteDuStagiaire$i && useradd stagiaire$i
  91.                            fi
  92.                      done
  93.                      sleep 1
  94.                      echo $i
  95.                      i=$(expr $i + 1)
  96.                   done
  97.                   echo 100
  98.                   sleep 2
  99.                } | whiptail --title "Initialisation des postes" --gauge "Création des utilisateurs et paramétrage des noms d'hôtes en cours" 6 60 0
  100.                whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu"
  101.            ;;
  102. # Suppression des données utilisateurs
  103.            Reinitialiser)
  104.                for ((i=1;i<6;i=i+1)); do
  105.                      checkuser=sshpass -p $password ssh $admin@192.168.100.$i grep -c '^stagiaire$i' /etc/passwd
  106.                      if [ $chekuser=1 ]; then
  107.                         userdel -f "stagiaire$i"
  108.                      else
  109.                         break 2
  110.                      fi
  111.                done
  112.                for ((i=1;i<6;i=i+1)); do
  113.                      checkuser=sshpass -p $password ssh $admin@192.168.101.$i grep -c '^stagiaire$i' /etc/passwd
  114.                      if [ $chekuser=1 ]; then
  115.                         userdel -f "stagiaire$i"
  116.                      else
  117.                         break 2
  118.                      fi
  119.                done
  120.                whiptail --title "$title" --msgbox "Opération terminée.\nCliquez sur OK pour revenir au menu"
  121.             ;;
  122.             Quitter)
  123.                exit
  124.             ;;
  125.    esac
  126. }
Add Comment
Please, Sign In to add comment