得到下面的简单代码
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 列),忽略那些空的。