删除 x 天未登录的用户

删除 x 天未登录的用户

得到下面的简单代码

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

我希望理想情况下删除所有 60 天以上未登录的用户。

但读取的问题/etc/passwd是我也得到了所有的系统用户。

有什么办法可以获取用户创建的帐户并将其删除,因为他们已经 90 天没有登录了。

干杯

答案1

检查 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

答案2

检查用户的主目录(第 6 列),忽略那些空的。

相关内容