Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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"
- required=$(dpkg -l | egrep '^ii +sshpass' ; dpkg -l | egrep '^ii +whiptail')
- if [ ! $(grep sshpass <<< $required) ]; then
- apt-get install --force-yes sshpass
- else if [ ! $(grep whiptail <<< $required) ]; then
- apt-get install --force-yes whiptail
- fi
- # 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
- admininput
- fi
- # 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." \
- "Reinitialiser" "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)
- {
- i=0
- while (true); do
- for ((i=1;i<6;i=i+1)); do # Pour le réseau Abeille
- checkuser=sshpass -p $password ssh $admin@192.168.100.$i grep -c '^stagiaire$i' /etc/passwd
- if [ $chekuser=1 ]; then # Vérifie si l'utilisateur existe déjà
- break 2
- else
- hostname PosteDuStagiaire$i && useradd stagiaire$i
- fi
- done
- for ((i=1;i<6;i=i+1)); do # Pour le réseau Baobab
- checkuser=sshpass -p $password ssh $admin@192.168.101.$i grep -c '^stagiaire$i' /etc/passwd
- if [ $chekuser=1 ]; then
- break 2
- else
- hostname PosteDuStagiaire$i && useradd stagiaire$i
- fi
- done
- sleep 1
- echo $i
- i=$(expr $i + 1)
- done
- echo 100
- sleep 2
- } | 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
- Reinitialiser)
- for ((i=1;i<6;i=i+1)); do
- checkuser=sshpass -p $password ssh $admin@192.168.100.$i grep -c '^stagiaire$i' /etc/passwd
- if [ $chekuser=1 ]; then
- userdel -f "stagiaire$i"
- else
- break 2
- fi
- done
- for ((i=1;i<6;i=i+1)); do
- checkuser=sshpass -p $password ssh $admin@192.168.101.$i grep -c '^stagiaire$i' /etc/passwd
- if [ $chekuser=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
- }
Add Comment
Please, Sign In to add comment