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"
- # 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 $? == 0; then
- required=$(dpkg -l | grep -E '^ii +sshpass' ; dpkg -l | grep -E '^ii +whiptail')
- if ! grep -q sshpass <<<"$required"; then
- apt-get install --force-yes sshpass
- elif ! grep -q whiptail <<<"$required"; then
- apt-get install --force-yes whiptail
- fi
- 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 $? == 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 $? == 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." \
- "Réinitialiser" "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 [ "$checkuser" == 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 [ "$checkuser" == 1 ]; then
- break 2
- else
- hostname PosteDuStagiaire"$i" && useradd stagiaire"$i"
- fi
- done
- sleep 1
- echo "$i"
- i=$(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
- Réinitialiser)
- 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 [ "$checkuser" == 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 [ "$checkuser" == 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