基于 Shell 脚本,实现显示 Linux 用户的密码修改时间、到期时间、到期天数和密码有效期等信息。
Shell 脚本:
#!/bin/bash# 获取用户名
read -p "请输入要查询的用户名: " username# 检查用户是否存在
if id "$username" &>/dev/null; thenecho "正在查询用户 $username 的密码信息..."
elseecho "用户 $username 不存在,请检查用户名是否正确。"exit 1
fi# 使用 chage 命令获取用户密码信息
chage_info=$(chage -l $username)# 提取信息
last_change=$(echo "$chage_info" | grep "Last password change" | awk -F": " '{print $2}')
password_expires=$(echo "$chage_info" | grep "Password expires" | awk -F": " '{print $2}')
password_inactive=$(echo "$chage_info" | grep "Password inactive" | awk -F": " '{print $2}')
account_expires=$(echo "$chage_info" | grep "Account expires" | awk -F": " '{print $2}')
min_days=$(echo "$chage_info" | grep "Minimum number of days" | awk -F": " '{print $2}')
max_days=$(echo "$chage_info" | grep "Maximum number of days" | awk -F": " '{print $2}')
warning_days=$(echo "$chage_info" | grep "Number of days of warning" | awk -F": " '{print $2}')# 获取当前日期
current_date=$(date +%Y-%m-%d)# 计算密码到期天数
if [[ "$password_expires" == "never" ]]; thendays_left="密码永不过期"
elseexpire_date=$(date -d "$password_expires" +%Y-%m-%d)days_left=$(( ( $(date -d "$expire_date" +%s) - $(date -d "$current_date" +%s) ) / 86400 ))if [[ $days_left -lt 0 ]]; thendays_left="密码已过期"fi
fi# 显示用户密码信息
echo "-------------------------------"
echo "用户: $username 的密码信息如下:"
echo "-------------------------------"
echo "上次修改密码的时间 : $last_change"
echo "密码到期时间 : $password_expires"
echo "密码剩余有效天数 : $days_left"
echo "密码无效时间 : $password_inactive"
echo "账户到期时间 : $account_expires"
echo "密码最小修改间隔(天) : $min_days"
echo "密码最大有效期(天) : $max_days"
echo "密码到期前提醒天数 : $warning_days"
echo "-------------------------------"
输出:
请输入要查询的用户名: testusr
正在查询用户 testusr 的密码信息...
-------------------------------
用户: testusr 的密码信息如下:
-------------------------------
上次修改密码的时间 : Aug 16, 2024
密码到期时间 : Nov 14, 2024
密码剩余有效天数 : 29
密码无效时间 : never
账户到期时间 : never
密码最小修改间隔(天) : 7
密码最大有效期(天) : 90
密码到期前提醒天数 : 7
-------------------------------
说明:
- 上次修改密码的时间:显示用户上次修改密码的日期。
- 密码到期时间:显示密码到期的日期。
- 密码剩余有效天数:计算当前日期与密码到期日期之间的天数。
- 密码无效时间:显示密码失效的日期(如适用)。
- 账户到期时间:显示账户到期的时间(如适用)。
- 密码最小修改间隔(天):密码修改的最小间隔天数。
- 密码最大有效期(天):密码的最大有效期。
- 密码到期前提醒天数:在密码过期前多少天提醒用户。
该脚本有助于快速检查 Linux 用户的密码状态,并提供相应的密码有效期等信息。