列出帐户未锁定的用户

时间:2015-09-02 18:01:55

标签: linux bash shell unix aix

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

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

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

新报告应反映活跃用户列表以及已禁用/锁定用户列表。

我目前的脚本如下:

#!/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                                                                             ", $1, $3, $5)}'  >/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"

1 个答案:

答案 0 :(得分:1)

从内存开始,因为自从我使用AIX以来,它已成为一个厕所,ooo,ooo,ong时间,你可以使用lsuser获取锁定帐户:

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

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

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

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

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

实际上修改原始脚本留给了OP。