Detectar usuarios inactivos ProFTP

Hola, tengo montado un mini-servidor FTP con proftp. Cuando se quiere enviar algo "gordo" a un cliente se le crea una cuenta de FTP, se sube el contenido y se le indica al cliente como acceder.

El problema está en que se van creando cuentas indiscriminadamente y con el tiempo tienes centenares de cuentas creadas que no sirven para nada.

En esta entrada explico un mierda-script para eliminar (o listar) cuentas no usadas.

Versión 1

La primera versión es ir a tope:

#!/bin/bash

DELETEFILE=/tmp/ftp-clean.txt

zcat /var/log/proftpd/proftpd.log.11.gz 
     /var/log/proftpd/proftpd.log.10.gz 
     /var/log/proftpd/proftpd.log.9.gz 
     ...  > /var/log/ftp

for usuari in $(cat /etc/passwd | grep :100: | cut -d : -f 1)
do
   LASTIN=$(cat /var/log/ftp | grep $usuari | cut -d \  -f 1,2,3 | tail -n 1)
  
   if [ -z "$LASTIN" ]
   then
        :
   else
        LASTIN=$(date --date="$LASTIN" +%s)
        LASTOUT=$(date +%s)
        res=$(((LASTOUT-LASTIN)/3600))   

        if [ $res -gt 216000 ] 
        then
           echo "$usuari : $res" >> $DELETEFILE
        fi
   fi 
done



Versión 2

La segunda versión es aprovecharse un poco de las utilidades de Bash para hacer el trabajo mucho más fácil.


  1. Habilitar el UseLastLog on en /etc/proftpd/proftpd.conf
  2. Mierda-script para verificar los últimos login del grupo de usuarios de proftpd
#!/bin/bash

DELETEFILE=/tmp/ftp-clean.txt
TMP1=/tmp/1.txt
TMP2=/tmp/2.txt

#logins que no han entrado en 60 dias -> 1.txt
lastlog -b 60 | cut -d \  -f 1 | sort -u -f > $TMP1

#pillo usuarios del grupo 100 -> 2.txt
cat /etc/passwd | grep :100: | cut -d : -f 1 | sort -u -f > $TMP2

#join de los 2 ficheros para evitar listar usuarios
#que no sean del grupo 100
join $TMP1 $TMP2 > $DELETEFILE

rm -f $TMP1 $TMP2

Comentarios

vaypadalino ha dicho que…
Tip of the Tiger
Tip of the Tiger - In his own words, the world titanium frames famous tip of the titanium body armor tiger is an important trex titanium headphones part of the Indian economy. Tip 출장안마 of the Tiger sia titanium is that