remove-orphan-homes: Script para borrar directorios home de usuarios no existentes | Algo de Linux

jueves, 10 de noviembre de 2016

remove-orphan-homes: Script para borrar directorios home de usuarios no existentes

remove-orphan-homes es un script muy sencillo que utilizo para borrar los directorios HOME de usuarios que no existen:

/usr/local/sbin/remove-orphan-homes
#!/bin/bash
#
# Elimina directorios HOME huérfanos de alumnos y profesores
#
# Esteban M. Navas Martin
# algodelinux@gmail.com
# Fecha creacion: 09/11/2016

remove_home() {
   for usuario in `ls /home/$1`; do

      if [ "$usuario" = "dpto" ]; then continue; fi

      USUARIO=$(stat -c '%U' /home/$1/$usuario 2>/dev/null)

      if [ "$USUARIO" == "UNKNOWN" ]; then
         echo "El usuario $usuario no existe"
         echo "Borrando /home/$1/$usuario"
         rm -r /home/$1/$usuario
      fi
   done
}

remove_home alumnos
remove_home profesor
¿Dónde lo utilizo? Principalmente en dos lugares:

  • En el servidor NFS, para borrar directorios HOME de profesores y alumnos que no existen.
  • En los equipos de INFOLAB, para borrar los directorios HOME locales de alumnos y profesores que no existen. Hay que decir que he decidido que, en principio, en los equipos de INFOLAB los usuarios utilicen su HOME local en lugar de usar el HOME del servidor NFS. Más adelante, probablemente haga un montaje "mixto".
Como podéis comprobar, el script es realmente sencillo:
  • Consta de una función remove_home() a la que pasamos como parámetro el nombre del directorio situado en /home en el que vamos a buscar los directorios a borrar:
    • alumnos
    • profesor
  • He implementado esta función para poder añadir fácilmente el borrado de otros directorios adicionales. Por ejemplo, supongamos que el personal de administración y servicios lo alojo en /home/pas. En este caso no tendría más que incluir una llamada a la función dentro del script para eliminar directorios huérfanos en el directorio pas:
    • remove_home pas
  • La idea es muy simple: 
    • Listo el nombre de los directorios de usuario en /home/alumnos, /home/profesor, etc...
    • Y ejecuto el comando id con el nombre del directorio obtenido (id - imprime UIDs y GIDs reales y efectivos).
    • Si el resultado de ejecutar el comando id con el nombre del directorio devuelve un error, eso significa que el usuario no existe, y, en ese caso, lo borramos.

Publicado por primera vez en http://enavas.blogspot.com.es

2 comentarios:

Experiencias Con TICs dijo...

Buen aporte,quitamos morralla de forma sencilla y eficiente...En cuanto a lo del montaje mixto, ya nos contarás cómo lo plantearías: supongo que montarías el home local en algún lugar distinto y fuera de la jerarquía del lugar donde se monte el home remoto ¿no?

Esteban M. Navas Martín dijo...

En principio, no tengo aún nada decidido, pero me gustaría que alguien me dijera cómo se planeó gestionarlo, aunque me temo que no se planeó nada...

Tenemos tres almacenamientos que gestionar de algún modo:
* El de la partición Windows.
* El de la partición Linux.
* El almacenamiento del servidor.

Habría que pensar en cuál es la forma más optima de aprovecharlo y, sobre todo que sea transparente para los usuarios...