Apagar usuários que não efetuaram login por x dias

1

obteve o código simples abaixo

USERS='cat /etc/passwd'
for USER in $USERS
do
   echo "---------- $USER --------------"
   last -n 4 $USER
done

Eu quero, idealmente, remover todos os usuários que não fazem login há mais de 60 dias.

Mas o problema com a leitura do /etc/passwd é que eu também recebo todos os usuários do sistema.

Qualquer ideia de como obter apenas as contas criadas pelo usuário e removê-las é que elas não fazem login há 90 dias.

Felicidades

    
por bsmoo 25.03.2013 / 13:24

2 respostas

3

Verifique se o UID está entre UID_MIN e UID_MAX (definido em /etc/login.defs ):

UID_MIN=$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)
UID_MAX=$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)

USERS=$(awk -F: -v min=$UID_MIN -v max=$UID_MAX '{
  if ($3 >= min && $3 <= max) print $1
}' /etc/passwd)

now=$(date +%s)

for user in $USERS; do
  last_login=$(date -d "$(last -FRn 1 $user |
    egrep -v "wtmp begins|still logged in" |
    awk '{print $10 " " $11 " " $13 " " $12}')" +%s)
  [ $(( (now - last_login) / 86400 )) -ge 90 ] && echo $user
done
    
por 25.03.2013 / 14:59
0

Verifique o diretório inicial do usuário (6ª coluna) e ignore os que estão vazios.

    
por 25.03.2013 / 13:31