识别bash数组的元素-确定aws密钥是否已使用90天

时间:2018-07-06 15:51:46

标签: bash amazon-web-services

我的bash脚本中有一行,可以拉出AWS访问密钥及其为用户创建的日期。

aws iam list-access-keys --user-name $user_name --profile=prod  | jq -r '.AccessKeyMetadata[] | (.AccessKeyId, .CreateDate)')

它输出如下信息:

AKIAI6Q5EQ53GONANGBA
2018-07-05T21:28:39Z
AKIAICDOHVTMEAB6RM5Q
2018-02-08T03:55:51Z

我尝试创建一个数组并为该数组循环:

echo "User $user_name keys:"

   user_keys=( $(aws iam list-access-keys --user-name $user_name --profile=kpmg-prod  | jq -r '.AccessKeyMetadata[] | (.AccessKeyId, .CreateDate)' '\n') )
   for i in "$user_keys"
   do 
     echo "$user_keys"
   done

但是让我高兴的是这个输出:

User my_aws_user keys:
AKIAI6Q5EQ53GONANGBA

我想将该命令的输出分配给数组。并在一行上打印出密钥和时间戳。并使用时间戳记来确定用户密钥是否早于90天。

如果它已超过90天,它将执行我已经解决的一些附加功能。我该如何实现?

1 个答案:

答案 0 :(得分:1)

如果user_keys是一个数组,则$user_keys${user_keys[0]}是等效的。你想要

for i in "${user_keys[@]}"
do 
  echo "$i"
done

相反。 (将数组扩展到其全部内容,每个单词一个元素,并在主体循环中使用索引。)