You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2010-12-20 18:23:10

gontzal
Member
Registered: 2009-06-17
Posts: 31

deleting users deleted or changed from OU in AD

Hi everybody. This is an script for deleting users in GLPI that have been deleted or changed from OU in Active Directory. I hope it may help someone.

##############################################
##############################################
#!/bin/bash

# Ficheros temporales. TEMP FILES

ftmp=./tmp/listado-usuarios
uborrar=./tmp/usuarios-borrados
ftmp2=./tmp/usuarios-borrados3

# Borramos fichero de log. DELETE LOG FILES

> $uborrar

# Si el directorio ./tmp no existe, lo crea. IF /tmp DOES NOT EXISTS, CREATE IT

if [ -e ./tmp ]
then
  echo "El directorio existe"
else
  mkdir -p ./tmp
fi

# Busqueda de usuarios en la Base de Datos local. SEARCH USERS AT LOCAL DATABASE

/opt/lampp/bin/mysql -h localhost -u USER -p -s -e "use DATABASE_NAME;" -e "select A.name, B.ldap_basedn from glpi_users A, glpi_auth_ldap B where A.id_auth = B.ID;" > $ftmp

# Sustituimos las enhes por enes. THIS IS AN SCRIPT FOR REPLACE SPECIAL CHARACTERS (SEE BELOW)

. /opt/lampp/htdocs/glpi/scripts/tmp/cambio.sh

# Comparamos cada resultado con los del directorio Activo, y los almacenamos en un fichero temporal. COMPARE RESULTS WITH A.DIRECTORY AND SAVE IN A TEMP FILE

IFS=">"
cat $ftmp2 | while read user_glpi basedn
do
  user_domain=`ldapsearch -x -w PASSWORD -D "CN=USER-ADMINISTRATOR-A.D.,CN=Users,DC=XX,DC=XX" -h SERVER.DOMAIN -b dc=XX,dc=XX -LLL -b$basedn "(&(sAMAccountName=$user_glpi)(objectClass=user))" | grep -v 'refldap' `
  if [ "$user_domain" == "" ]
  then
    echo "Usuario no encontrado: "$user_glpi >> $uborrar
  fi
done

# Borramos el fichero temporal de los usuarios de la base de datos DELETE TEMP USERS FILE

rm -f $ftmp $ftmp2

# Buscamos en el fichero temporal los usuarios que deben ser borrados. SEARCH USERS TO BE DELETED

if [ -s $uborrar ]
then
  IFS=$'\n'
  for i in `cat $uborrar | awk '{if($5=="") print $4; else print $4" "$5 } '`
  do
    echo "¿Deseas borrar al usuario $i?"
    read op
    case $op in
    "n")
       echo "El usuario" $i "no va a ser borrado"
       sleep 1
    ;;
    "s")
# Ejecutamos la sentencia sql de borrado. EXECUTE DELETE

       /opt/lampp/bin/mysql -h localhost -u USER -p --password=PASSWORD -s -e "use DATABASE_NAME;" -e "delete from glpi_users where name = '"$i"';"
       echo "El usuario" $i "ha sido borrado de la base de datos de mysql".
    ;;
    *)
      echo "No has introducido una respuesta valida"
    esac
  done
else
  echo "No hay usuarios que borrar"
fi

##############################################
##############################################

SCRIPT cambio.sh


##############################################
##############################################
# ONE: CHANGE SPANISH SPECIAL CHARACTERS
cat /opt/lampp/htdocs/glpi/scripts/tmp/listado-usuarios | tr áéíóúüñÑ aeiouunN > /opt/lampp/htdocs/glpi/scripts/tmp/usuarios-borrados2
# TWO: REPLACE TAB WITH '>' FOR SEPARATE FIELDS NAME AND OU
sed 's/\t/>/g' /opt/lampp/htdocs/glpi/scripts/tmp/usuarios-borrados2 > /opt/lampp/htdocs/glpi/scripts/tmp/usuarios-borrados3
##############################################
##############################################

Offline

Board footer

Powered by FluxBB