在 Linux Bash 脚本中获取本地用户密码到期天数

在 Linux Bash 脚本中获取本地用户密码到期天数

我正在使用 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,问题来自罗曼·罗吉兹,回答者丹泽尔

相关内容