我必须在每个环境中审核我们的 linux 服务器上的用户帐户,所以我想编写脚本检查每个帐户是否过期。我有一个for 循环,它提取 /etc/passwd 中列出的用户帐户并将它们存储在一个数组中。
#!/bin/bash
users = $(awk -F: '{ print $1}' /etc/passwd)
uservar=($users)
for value in "${uservar[0]}"
do chage -l $value
done
理想情况下,该脚本将首先显示用户名,然后在新行上显示该用户帐户的帐户到期日期和其他信息。该过程将针对每个帐户重复。目前它只显示没有用户名的所有用户帐户的帐户到期和日期,所以我无法区分这些帐户。一切也都堆叠在一起,因此难以阅读。理想情况下,输出如下所示:
userA
Last Password Change: 1/2/34
Password Expires: 1/2/34
Password Inactive: 1/2/34
.....
userB
Last Password Change: 1/2/34
Password Expires: 1/2/34
Password Inactive: 1/2/34
.....
我将不胜感激任何帮助/建议。
你的问题的字面答案:
应该以以下形式生成输出
请注意,信息
chage
显示的来源在文件的字段中编码/etc/shadow
(表示为自 1970 年 1 月 1 日以来的天数)。直接解析该文件可能比使用
chage
和/或其他将这些字段转换为人类可读输出并对其进行解析的工具效率更高。