- Script de création automatique d'un groupe d'utilisateurs
pour un groupe d'utilisateurs, avec génération de mots de passe standard LINUX + SAMBA
#!/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
- Script de suppression du groupe
#!/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
- Créer des comptes décrits dans un fichier :
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