确定 AWS 密钥年龄时的日期命令无效日期

date command invalid date when determining age of AWS keys

我必须报告上次使用 AWS 密钥的时间。我正在为此脚本使用 bash。如果未使用密钥,则值为 'null',我必须考虑到这一点。

当我尝试使用 date 命令时出现以下错误:

date: invalid date ‘"2018-07-13T14:49:00Z"’
date: invalid date ‘null’

这是我的代码,我试图用它来打印这些值:

if [[ "$key1_last_used" = 'null' ]]; then
    key1_last_used="key was never used."
   else
     key1_last_used=$(date --date $key1_last_used_date "+%B %d %Y")
   fi

如果我用这个命令确定密钥的年龄:

aws iam  get-access-key-last-used --access-key-id AKIAISEHPFM2DRIMIXXQ  --profile=nonprod  | jq '.AccessKeyLastUsed.LastUsedDate'

并返回此响应:

"2018-07-13T14:57:00Z"

代码然后 运行s 这个日期命令:

date --date '"2018-07-13T15:01:00Z"' '+%B %d %Y'

并产生这个结果:

date: invalid date ‘"2018-07-13T15:01:00Z"’

如果我遇到一个没有被使用过的密钥:

aws iam get-access-key-last-used --access-key-id AKIAIDZ7X4JCS5ANNXGQ --profile=nonprod | jq '.AccessKeyLastUsed.LastUsedDate'

我收到回复:

null

当日期命令为运行时,null被认为是无效输入:

date --date null '+%B %d %Y'
date: invalid date ‘null’

我不知道为什么日期打印不正确。那些额外的报价来自哪里?而且我不知道为什么 if /then 不能识别空输出。

您可以使用 jq -r 获取不带引号的字符串。

尝试使用

key1_last_used="Null"

以下作品

echo $(date "+%B %d %Y" ) $key1_last_used