#!/bin/bash # SCRIPT creer1.sh # ================ # création d'un ensemble de comptes construits # avec un nom generique suivi d'un numero # génération automatique de mot de passe Linux et Samba # ===================================================== echo Donnez un nom de connexion générique read nom echo "Donnez le nom du groupe (par défaut $nom)" read groupe if [ -z $groupe ] then groupe=$nom fi # le groupe existe t-il ? si oui, création impossible echo "Création du groupe $groupe" echo "==========================" groupadd $groupe if [ $? -ne 0 ] then echo "Création du groupe impossible FIN" exit 1 else echo "Création du groupe $groupe " >>creer.txt # pour trouver le numero gid du groupe, pas necessaire # gr=`grep $groupe /etc/group | cut -d ":" -f3` # echo "numero du groupe primaire $groupe : $gr " fi # saisie du mot de passe # le mot de passe par défaut est fabriqué avec les 3 premières lettres # suivies du numéro de l'utilisateur motpasse=$(echo $nom | cut -c1-3) echo "Donnez un mot de passe générique (par défaut $motpasse)" read mdp if [ -z $mdp ] then mdp=$motpasse fi # saisie des numeros echo numero mini read mini echo numero maxi read maxi # création des comptes Samba ? echo "Création (aussi) des comptes Samba ? (o/n)" read rep if [ $rep = "o" -o $rep="O" ] then smb="0" fi echo "Création des comptes $nom$mini a $nom$maxi" echo "===========================================" # declarer i variable de type entier (obligatoire) declare -i i i=$mini while [ $i -le $maxi ] do nomuser="$nom$i" motpasse="$mdp$i" # création du compte Linux useradd -G $groupe $nom$i echo $motpasse | (passwd --stdin $nomuser) # création du compte Samba avec le meme mot de passe if [ $smb = 0 ] then smbpasswd -a $nomuser $motpasse fi # affichage du compte-rendu uid=$(grep $nomuser /etc/passwd | cut -d: -f3) echo "compte Linux $nomuser ---> créé avec le numéro $uid et le mot de passe $motpasse" if [ $smb = 0 ] then echo " compte SAMBA $nomuser ---> créé avec le mot de passe $motpasse" fi # ajout dans le fichier de log creer.txt echo "compte Linux $nomuser / uid = $uid / passwd = $motpasse, créé le $(date)" >> creer.txt if [ $smb = 0 ] then echo " & SAMBA $nomuser / $motpasse, créé le $(date)" >> creer.txt fi # au suivant ! i=$i+1 done echo "----------------------------------------------" >>creer.txt
#!/bin/bash # SCRIPT supprimer1.sh # ==================== # saisie du nom générique du groupe à supprimer echo "Donnez le nom du groupe de comptes a supprimer" read groupe if [ -z $groupe ] then echo "Donnez un nom de groupe valide !" exit 1 fi # vérification : ce groupe existe t-il ? # rappel : \b pour éviter que $groupe soit seulement le début du nom d'un groupe if ! grep "^$groupe\b" /etc/group then echo "ce groupe n'existe pas ... fin" exit 1 fi echo "Suppression des comptes de $groupe" echo "==================================" liste=$(grep "^$groupe" /etc/passwd | cut -d ":" -f1) echo "Liste des comptes à supprimer : " echo $liste # attention ! ne pas ecrire "$liste" ! pourquoi ?? set -- $liste for nom in "$@" do if userdel -r $nom then echo "suppression de $nom" # pour enregistrer les comptes effectivement supprimes dans un fichier echo "$nom est supprimé le $(date)" >>suppr.txt fi done # y a t-il encore un compte du groupe ? if [ ! -e "/home/$nom"* ] then echo "Le groupe est vide ; suppression du groupe (o/n) ?" read rep if [ $rep = "o" -o $rep = "O" ] then groupdel $groupe echo "Le groupe $groupe est supprimé le $(date)" >>suppr.txt fi fi echo "-------------------------------------------" >>suppr.txt
creer2.sh
#!/bin/bash # SCRIPT creer2.sh # ================ # Création automatique des comptes d'apres le fichier users.txt # appel : ./creer2.sh [users.txt] # analyse de la ligne de commande # a t-on passe un parametre ? if [ $# = 1 ] then fichier=$1 else echo "Nom du fichier des comptes Linux a creer [par defaut users.txt]" read fichier if [ -z $fichier ] then fichier="users.txt" echo "Utilisation du fichier $fichier pour genener les comptes" fi fi # le fichier $fichier existe t-il ? si non, sortie du script par exit 1 if [ ! -e $fichier ] then echo "Le fichier $fichier n'existe pas ! Verifiez !" exit 1 fi # Lecture une par une des lignes de $fichier cat $fichier | while true do read ligne # c'est la fin du fichier --> sortie brutale de la boucle if [ "$ligne" = "" ] then break fi # Traitement de la ligne (attention pas de " " autour de $ligne) # on "eclate" la ligne en affectant les variables de position set -- $ligne login=$1 mdp=$2 nom=$3 groupe=$4 echo $login $passwd $groupe $nom # existe t-il un sous-rep au nom $login dans /home/ ? if [ -d "/home/$login" ] then echo "Le compte $login existe deja ! " # on cree le compte avec $groupe comme groupe primaire else useradd -G $groupe $login echo $mdp | (passwd --stdin $login) smbpasswd -a $login $mdp uid=$(grep -w "^$login" /etc/passwd | cut -d: -f3) echo "creation de $login / uid = $uid / passwd = $mdp" echo "creation de $login / uid = $uid / passwd = $mdp, cree le $(date)" >>creer.txt fi done # fin boucle de creation echo "----------------------------------------------" >>creer.txt