确定日期是否在 bash 中超过 90 天

use*_*201 4 linux bash date

如果用户 AWS 访问密钥超过 90 天,我需要向安全团队发出警报。我在 bash 中这样做。

到目前为止,我的脚本正在输出这样的键和日期:

AKIAJS7KPHZCQRQ5FJWA : 2016-08-31T15:38:18Z
AKIAICDOHVTMEAB6RM5Q : 2018-02-08T03:55:51Z
Run Code Online (Sandbox Code Playgroud)

如何在 bash 中使用该日期格式确定日期是否超过 90 天?

我正在使用 Ubuntu 18.04。我相信日期格式是 ISO 8601。如果这也是错误的,请确认/更正。

roa*_*ima 11

您可以使用 GNUdate将日期时间字符串转换为秒数(自 1970 年 1 月 1 日的“纪元”以来)。从那里开始是一个简单的算术比较

datetime='2016-08-31T15:38:18Z'
timeago='90 days ago'

dtSec=$(date --date "$datetime" +'%s')    # For "now", use $(date +'%s')
taSec=$(date --date "$timeago" +'%s')

echo "INFO: dtSec=$dtSec, taSec=$taSec" >&2

[ $dtSec -lt $taSec ] && echo too old
Run Code Online (Sandbox Code Playgroud)