Shell实现查看用户密码有效期

基于 Shell 脚本,实现显示 Linux 用户的密码修改时间、到期时间、到期天数和密码有效期等信息。

Shell 脚本:

#!/bin/bash

# 获取用户名
read -p "请输入要查询的用户名: " username

# 检查用户是否存在
if id "$username" &>/dev/null; then
    echo "正在查询用户 $username 的密码信息..."
else
    echo "用户 $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" ]]; then
    days_left="密码永不过期"
else
    expire_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 ]]; then
        days_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 用户的密码状态,并提供相应的密码有效期等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值