写出用chage -l查询linux所有用户的shell脚本
时间: 2024-02-01 18:13:01 浏览: 247
可以使用以下脚本查询Linux系统中所有用户的shell:
```
#!/bin/bash
for user in $(cut -f1 -d: /etc/passwd); do
echo "User: $user"
chage -l $user | grep "Shell"
done
```
这个脚本会遍历 `/etc/passwd` 文件中的所有用户,并对每个用户运行 `chage -l` 命令查询其密码过期日期和其他信息。然后使用 `grep` 过滤出与 shell 相关的行,并将其输出到屏幕上。
相关问题
写出筛选非系统用户并查询密码是否过期以及账户是否锁定的shell脚本
以下是一个简单的shell脚本,可以用于筛选非系统用户并查询密码是否过期以及账户是否锁定:
```
#!/bin/bash
# 获取所有非系统用户
users=$(cut -d: -f1,3 /etc/passwd | awk -F: '$2 >= 1000 { print $1 }')
# 遍历所有用户
for user in $users; do
# 检查密码是否过期
password_status=$(chage -l $user | grep "Password expires" | awk '{print $4}')
if [[ "$password_status" != "never" && $(date -d "$password_status" +%s) -lt $(date +%s) ]]; then
echo "User $user: password expired!"
fi
# 检查账户是否锁定
account_status=$(passwd -S $user | awk '{print $2}')
if [[ "$account_status" == "L" ]]; then
echo "User $user: account locked!"
fi
done
```
该脚本首先获取所有非系统用户的用户名,然后遍历每个用户。对于每个用户,它使用`chage`命令检查密码是否过期,并使用`passwd -S`命令检查账户是否锁定。如果密码已过期或账户已锁定,则输出相应的消息。
请注意,该脚本需要在具有管理员权限的Linux系统上运行。
阅读全文