vlotho

Untitled

Jun 8th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.88 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.  
  30. # Affiche une boite de dialogue présentant le script et installe les prérequis en arrière plan
  31. whiptail --title "$title" \
  32.       --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
  33. #exitstatus = $?
  34. if $? == 0; then
  35.    required=$(dpkg -l | grep -E '^ii +sshpass' ; dpkg -l | grep -E '^ii +whiptail')
  36.    if ! grep -q sshpass <<<"$required"; then
  37.       apt-get install --force-yes sshpass
  38.    elif ! grep -q whiptail <<<"$required"; then
  39.       apt-get install --force-yes whiptail
  40.    fi
  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 $? == 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 $? == 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.             "Réinitialiser" "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 [ "$checkuser" == 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 [ "$checkuser" == 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=$(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.            Réinitialiser)
  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 [ "$checkuser" == 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 [ "$checkuser" == 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