1

получил простой код ниже

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

В идеале я хочу удалить всех пользователей, которые не вошли в систему более 60 дней.

Но проблема с чтением /etc/passwd заключается в том, что я получаю всех пользователей системы.

Любые идеи, как получить только созданные пользователем учетные записи и удалить их, состоят в том, что они не вошли в систему в течение 90 дней.

ура

2 ответа2

3

Проверьте, находится ли UID между UID_MIN и UID_MAX (определено в /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
0

Проверьте домашний каталог пользователя (6-й столбец) и игнорируйте те, которые пусты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .