Linux 列出帐户为';锁不上

Linux 列出帐户为';锁不上,linux,bash,shell,unix,aix,Linux,Bash,Shell,Unix,Aix,我已经创建了一个脚本,其中列出了来自服务器的用户列表并向他们发送电子邮件 我可以从多个主机获取用户列表,并且在发送列表之前,它会过滤一个名为ignore.txt的文件(其中包含不需要的用户) 现在的挑战是,/etc/passwd有帐户被锁定(未激活)的用户。是否可以编辑下面的脚本并发送活动用户列表以及帐户被锁定的用户列表 新报告应反映活动用户列表以及禁用/锁定用户列表 我当前的脚本如下所示: #!/bin/ksh #title :user.list.script.k

我已经创建了一个脚本,其中列出了来自服务器的用户列表并向他们发送电子邮件

我可以从多个主机获取用户列表,并且在发送列表之前,它会过滤一个名为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"
#/bin/ksh
#标题:user.list.script.ksh
#描述:此脚本从服务器收集用户列表
#注意:可以添加多个主机
#主机格式:
HOSTS=“00.00.00-DEV”#示例“主机名DEV”
FILE=/home/zaira/report.txt#列表将保存在report.txt中
日期>$文件
echo>>$文件
对于主机,单位为$HOSTS;做
ip=$(echo$host | cut-d'-'-f 1)
title=$(echo$host | cut-d'-'-f2)
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
回显“$title实例”>>$FILE
perl-e'print“=”x 65,“\n”>>$FILE
#我们通过ignore.list进行筛选以删除不需要的用户
cat/tmp/temp | grep-wvf/home/zaira/ignore.list | sort>>$FILE
echo>>$文件
完成
rm-f/tmp/temp
mailx-r来自DEV no-reply@abc.com-s“用户列表”zairabanu@abc.com<“$FILE”

从内存开始,自从我使用AIX以来,它一直是一个loo,ooo,ooo,ooo,很长时间,您可以使用
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决定。

@林果皞 很难说你的锁定机制到底是如何工作的。有时,te“password”字段会到达
*
,有时在
/etc/shadow
中也会出现同样的情况。知道这一点,您的问题就很容易了。@peterh是一个AIX服务器。/etc/security/user。除了/etc/passwd中的基本设置外,/etc/security/user文件包含用户最重要的设置。/etc/security/user文件中的参数参数格式说明账户_lockedtrue | FALSE锁定账户;如果设置为True,则用户无法登录。我们通过运行chuser account\u locked=true USERNAME来锁定帐户。。例如/etc/security/user文件中的用户sshd有。。。。。。。。。。。。。。。。。。。。sshd:admin=false account\u locked=true login=false rlogin=false即使在AIX上也有很多方法可以做到这一点。不要忘记无效的登录shell(
/bin/foosh
)或非shell(
/bin/false
)也会“锁定”一个帐户。
smitty
可能也能做到这一点,不记得了。这将为您提供帐户被锁定的usres。其中一些用户不是像sshd这样的真实用户,这也是我创建ignore.list以筛选并删除不真实用户的原因之一。@Zairabanu那么您可能需要
login
属性。我将更新我的答案。是否可以修改现有脚本并使其发送活动用户列表和非活动用户列表(帐户已锁定)。因为我需要这两个list@Zairabanu是的,有可能。