meta données pour cette page
Ajouter massivement des utilisateurs (OpenLDAP)
Admettons que nous sommes dans une école où chaque année les administrateurs doivent entrer une liste conséquente de nouveau compte utilisateurs. Faire ça à la main demanderai beaucoup de temps… Grâce au language de script Bash, il va permettre d'automatiser ces tâches rien qu'en lui fournissant en paramètre le nom d'un fichier dont son contenue est une liste d'utilisateurs du type :
- comptes.txt
tatu bruno btatu tatu eric etatu nicolas sarkozi nsarkozi makarian luc mluc
Ainsi on pourra lancer l'exécution du script comme suit :
./ajout_massif_utilisateurs.sh comptes.txt
On obtiendra en sortie ce type de fichier :
Il nous reste plus qu'a ajouter ces nouvelles entrées :
ldapadd -W -D "cn=admin,dc=local,dc=net" -x -H ldap://localhost -f sortie_ajout_massif_utilisateurs.ldif
Assez attendu, voici le script :
- ajout_massif_utilisateurs.sh
#!/bin/bash # Ce code source provient du site : # https://wiki.bruno-tatu.com/doku.php?id=wiki:ajouter-massivement-utilisateurs-openldap if [ -z $1 ]; then echo Merci de renseigner en paramètre le fichier contenant une liste de compte utilisateurs pour OpenLDAP. exit 1 fi read -p "Merci de renseigner votre CN (ex: dc=local,dc=net) : " cn i=0 # Lecture ligne par ligne du fichier : while read line do # La ligne en cours de lecture sera stocké sous forme de tableau : info=($line) # Enregistrement d'une nouvelle entrée dans un fichier temporaire : cat > out.ldif.$i <<_EOF_ dn: cn=${info[0]} ${info[1]},ou=users,ou=iut,${cn} objectClass: top ObjectClass: inetOrgPerson objectClass: posixAccount cn: ${info[0]} ${info[1]} uid: ${info[2]} sn: ${line[0]} uidNumber: $((i+1010)) gidNumber: 2000 homeDirectory: /home/users/${info[1]} loginShell: /bin/sh userPassword: {crypt}${info[2]} _EOF_ i=$((i+1)) done < $1 # Compilation des entrées dans un seul fichier : cat out.ldif* > sortie_ajout_massif_utilisateurs.ldif rm -r out.ldif* echo "Succès de la compilation du fichier sortie_ajout_massif_utilisateurs.ldif." read -p "Souhaitez-vous mettre à jour la base LDAP ? (o/n) " pass if [ $pass == "o" ]; then read -p "Merci de renseigner le nom du manager (ex : admin) : " nom ldapadd -W -D cn=$nom,$cn -x -H ldap://localhost -f sortie_ajout_massif_utilisateurs.ldif fi
N'oubliez pas de le rendre exécutable !
chmod +x ajout_massif_utilisateurs.sh