列出帐户未锁定的用户

List users whose accounts isn't locked

我创建了一个脚本,它列出了来自服务器的用户列表并通过电子邮件发送给他们。

我可以从多个主机获取用户列表,它还在发送列表之前过滤了一个名为 ignore.txt 的文件(其中包含不需要的用户)。

现在的挑战是,/etc/passwd 的用户帐户被锁定(未激活)。是否可以编辑下面的脚本并发送活跃用户列表以及帐户被锁定的用户列表?

新报告应反映活跃用户列表以及 disabled/locked 用户列表。

我当前的脚本如下:

#!/bin/ksh
#title                :user.list.script.ksh
#description     :This script collects list of users from the server
#note               :Multiple hosts can be added



#HOSTS format:
HOSTS="00.00.00.00-DEV" #example "hostname-DEV"

FILE=/home/zaira/report.txt #list will be saved in report.txt

date > $FILE
echo >> $FILE

for host in $HOSTS; do
  ip=$(echo $host|cut -d '-' -f 1)
  title=$(echo $host|cut -d '-' -f 2)

  ssh $ip -q -l zaira cat /etc/passwd | awk -F: '{printf("%-30s\t%-30s\t%-40s\n                                                                             ", , , )}'  >/tmp/temp 2>/dev/null
  echo "$title instance" >> $FILE
  perl -e 'print "=" x 65,"\n"' >>$FILE
#we filter through ignore.list to remove unwanted users
  cat /tmp/temp|grep -wvf /home/zaira/ignore.list|sort >> $FILE
  echo >> $FILE
done

rm -f /tmp/temp

mailx -r From-DEV-no-reply@abc.com -s " User list" zairabanu@abc.com <  "$FILE"

凭记忆,自从我使用 AIX 以来已经很久了,您可以使用 lsuser 来锁定帐户:

lsuser -a account_locked ALL | grep '=true$' | awk '{ print  }'

如果您不想手动维护忽略列表,您可以获取可以登录的用户列表:

lsuser -a login ALL | grep '=true$' | awk '{ print  }'

关于 OP 原始脚本,您现在可能可以执行以下操作:

lsuser -a login ALL | grep '=true$' | awk '{ print  }' > /tmp/temp

实际修改原始脚本由 OP 决定。