我正在使用 RHEL 6.9。
如何在 Bash 脚本中获取本地用户密码到期前的天数?
我努力了:
chage -l <username>
passwd -S <username>
这些都没有提供直接的答案。
前者提供格式为“2019 年 9 月 29 日”的到期日期字符串。
后者提供一个日期字符串,表示上次设置密码的日期(格式如上),同时还提供密码有效的天数。
虽然解析起来很困难(在 Bash 脚本中很困难),但两者都可以用来推导出密码过期前的天数。我希望有一种方法可以直接获取密码过期前的天数。
社区里有人知道我该怎么做吗?
谢谢,戴夫
答案1
我希望有一种方法可以直接获取密码过期的天数。
这必须编写脚本。以下脚本应该可以帮助您入门:
#! /bin/bash
# get password data in array
saveIFS=$IFS
IFS=$'\n'
chagedata=( $(LC_TIME=C chage -l $USER | cut -d ':' -f 2 | cut -d " " -f 2-) )
IFS=$saveIFS
# obtain times in seconds
now=$(date +%s)
expires=$(date +%s -d "${chagedata[1]}")
# compute days left (roughly...)
daysleft=$(( ($expires-$now)/(3600*24) ))
echo "Days left: $daysleft"
来源:bash - 格式化 chage 命令日期输出 - 问答 - Ubuntu,问题来自罗曼·罗吉兹,回答者丹泽尔。