martes, 4 de noviembre de 2008

Una de shell scripting!

Este es un script muy básico que añadiré al reporte que genera el plogsumm.Este script muestra por pantalla(también se puede redireccionar a un fichero) es el espacio en disco de cada buzón de correo de cada usuario.
#!/bin/bash
#
#
#Este script se distribuye bajo licencia GPL o variantes!
echo "Informe espacio en disco de usuarios"
for usuario in `cat /etc/passwd|grep "/home/"|cut -d ":" -f1`;
do
ocupa=`du -sh /home/$usuario|awk '{ print $1 }' 2>/dev/null`
espacio=`echo "El buzon de "$usuario "ocupa "$ocupa 2>/dev/null`
echo $espacio
done
Explico un poco la linea 6.Necesitamos obtener el nombre de los usuarios que tienen como directorio $HOME el /home(puede ser el que queramos).No nos valdría como patrón hacer un ls -l de /home ya que, si este directorio está en otra partición, nos encontraremos con lost+found, que es el directorio, que almacena, entre otros ficheros e inodos perdidos.En este ejemplo utilizo el fichero /etc/passwd, con grep me quedo con /home, y con cut , con el parámetro -d ":" indico que el delimitador es :, y con -f1 que me quedo con la primera columna: el nombre de usuario.Después con du -sh juego con la variable $usuario y con awk me quedo con la primera colunma, es decir, el espacio en disco.Con 2>/dev/null envio los errores a la salida 2, la salida de error.
Pues nada, solo queda dar permisos de ejecución(chmod 700 miscript) y añadirlo al /etc/crontab para ejecutarlo cada X dias/semanas, y tendremos controlados "leechers" de nuestro /home.
Salud y gnuismo para todos!

No hay comentarios: