|
#!/bin/sh |
|
# Author: David Creus |
|
# Programa que automatitza la creació d'usuaris en un entorn OpenLDAP |
|
################################################################# |
|
#Verifiquem que el usuari que executa l'script es root # |
|
################################################################# |
|
if [ "$(id -u)" != "0" ]; then |
|
echo "Tens que ser root per executar aquest script" 1>&2 |
|
exit 1 |
|
fi |
|
|
|
################################################################# |
|
#Comprovem que els paràmetres # |
|
################################################################# |
|
if [ $# -ne 1 ]; then |
|
echo "Funcionament: Tens que introduir el fitxer.csv. Ex [./adduser.sh Alumnes.csv]" |
|
exit 1 |
|
fi |
|
|
|
################################################################# |
|
#Comprovem que el fitxer existeix o no està buit # |
|
################################################################# |
|
if [ -f $1 ] && [ -n $1 ]; then |
|
echo "Todo OK" > /dev/null |
|
|
|
else |
|
echo "Error en el fitxer, no existeix o està buit" |
|
exit 1; |
|
fi |
|
|
|
|
|
#Especifiquem la configuració LDAP |
|
CONFIG="/root/ldap/config" |
|
#Carguem la configuració LDAP |
|
. $CONFIG |
|
################################################################# |
|
#Tractem el fitxer i eliminem els accents del fitxer que hem # |
|
#passat com a paràmaetre # |
|
################################################################# |
|
sed -i "y/āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛñÑ/aaaaeeeeiiiioooouuuuüüüüAAAAEEEEIIIIOOOOUUUUÜÜÜÜnN/" $1 |
|
|
|
################################################################# |
|
#Eliminem els espais de línea (\n) que pugin haver-hi # |
|
################################################################# |
|
sed -i '/^$/d' $1 |
|
|
|
|
|
################################################################# |
|
#Començem a llegir linea per linea el fitxer csv # |
|
################################################################# |
|
|
|
while IFS=, read -r apellidos nombre |
|
do |
|
DISPLAYNAME=`ldapsearch -x | grep $nombre` |
|
|
|
#checkifexist=`ldapsearch -x | grep $primerainicial.$apellidos2 | cut -c7-100` |
|
################################################################# |
|
#Comprovem si el usuari existeix, si no existeix el crearem. # |
|
################################################################# |
|
|
|
if [ -z "$DISPLAYNAME" ]; then |
|
#Extreiem la primera inicial sense espais i amb les lletres amb minúscula |
|
primerainicial=`echo $nombre | cut -c1 | tr '[:upper:]' '[:lower:]' | sed -r 's/\s+//g'` |
|
#Extreiem els cognoms sense espais i amb les lletres amb minúscula |
|
apellidos2=`echo $apellidos | tr '[:upper:]' '[:lower:]' | sed -r 's/\s+//g'` |
|
######################################################################################################## |
|
#Comprovem quin es el utlim uidNumber, ordenem recursivament i agafem el primer valor, per exemple 2001# |
|
######################################################################################################## |
|
nuid=`slapcat | grep uidNumber | awk '{print $2}' | sort -r | head -1` |
|
######################################################################################################## |
|
#Si slapcat esta buit, especifiquem un valor. Ex: 2000 # |
|
######################################################################################################## |
|
|
|
if [ -z $nuid ]; then |
|
nuid="2000" |
|
fi |
|
######################################################################################################## |
|
#Sumem el ultim valor nuid+1 per exemple: 2000+1 # |
|
######################################################################################################## |
|
nuidsum=`echo $((nuid + 1)) | bc -l` |
|
######################################################################################################## |
|
#Guardem la data actual # |
|
######################################################################################################## |
|
date=`date -d now` |
|
######################################################################################################## |
|
#Generem un password i l'encriptem. La política d"usuari será nom+123 # |
|
######################################################################################################## |
|
PASSWORD=`$SLAPPASSWORD -h '{crypt}' -s $nombre'123'` |
|
( |
|
################################################################################################################ |
|
#Creem el fitxer ldif per a cada usuari # |
|
################################################################################################################ |
|
cat <<add-user |
|
dn: cn=$nombre $apellidos,ou=Asix,dc=$DOMAIN,dc=$ORG |
|
objectClass: person |
|
objectClass: iNetOrgPerson |
|
objectClass: top |
|
objectClass: posixAccount |
|
#Especifiquem el password del usuari |
|
userPassword: $PASSWORD |
|
sn: $apellidos |
|
#Concatenem la primera inicial + cognoms |
|
mail: [email protected] |
|
uid: $nombre |
|
#Especifiquem el uid number del usuari |
|
uidNumber: $nuidsum |
|
#Especifiquem el grup del usuari |
|
gidNumber: 500 |
|
#Especifiquem el directori del usuari |
|
homeDirectory: /home/users/$primerainicial$apellidos2 |
|
add-user |
|
) > $TMP/adduser.ldif |
|
$LDAPADDCMD -x -w $LDAPPASS -D "cn=admin,dc=$DOMAIN,dc=$ORG" -f $TMP/adduser.ldif && rm $TMP/adduser.ldif |
|
echo La contrasenya del usuari és: $nombre'123' |
|
#Escribim al log que el usuari s'ha afegit correctament. |
|
echo "$date >> El usuari$nombre $apellidos s'ha afegit correctament a OpenLDAP" >> /var/log/openldap |
|
else |
|
date=`date -d now` |
|
echo "El usuari ja existeix :-(" |
|
#Escribim al log que no s'ha afegit |
|
echo "$date >> El usuari$nombre $apellidos NO s'ha afegit a OpenLDAP" >> /var/log/openldap |
|
|
|
fi |
|
done < $1 |