写出用chage -l列出所有本地用户账户的详细信息的shell脚本
时间: 2023-07-12 15:07:27 浏览: 53
以下是用chage -l列出所有本地用户账户的详细信息的shell脚本:
```bash
#!/bin/bash
# 使用 grep 命令过滤出所有本地用户账户的用户名
usernames=$(cat /etc/passwd | grep -vE '^(#|$)' | awk -F: '{print $1}')
# 遍历每个用户名,输出其详细信息
for username in $usernames
do
echo "User: $username"
chage -l $username
echo ""
done
```
这个脚本会先使用 grep 命令过滤出所有本地用户账户的用户名,然后使用 for 循环遍历每个用户名,最后使用 chage -l 命令输出该用户的详细信息。
相关问题
写出用chage -l查询linux所有用户的shell脚本
可以使用以下脚本查询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系统上运行。