结合“ aws iam list-users”的输出和“ aws iam list-for-user”的相应信息

时间:2019-03-06 10:29:47

标签: shell aws-cli

我将如何传递“ aws iam list-users”的所有输出并引用用户名,以便我可以从“ aws iam list-groups-for-user”中提取所有相应的信息?最好将其保存为一个精美的.tsv文件。

2 个答案:

答案 0 :(得分:1)

这可能会让您入门:

<20190306-11:00:08.000000000, FIX.4.2:TW->ISLD, event>
  (Created session)
<20190306-11:00:08.000000000, FIX.4.2:TW->ISLD, event>
  (Connecting to 127.0.0.1 on port 50182 (Source :0))
<20190306-11:00:08.000000000, FIX.4.2:TW->ISLD, outgoing>
  (8=FIX.4.29=6735=A34=149=TW52=20190306- 
11:00:08.00056=ISLD98=0108=30141=Y10=244)
<20190306-11:00:08.000000000, FIX.4.2:TW->ISLD, event>
  (Initiated logon request)
<20190306-11:00:58.000000000, FIX.4.2:TW->ISLD, event>
  (Timed out waiting for logon response)
<20190306-11:00:58.000000000, FIX.4.2:TW->ISLD, event>
  (Disconnecting)

答案 1 :(得分:1)

要以SQL方式连接aws iam list-users返回的表和aws iam list-groups-for-user的迭代作为制表符分隔的数据,可以尝试执行以下操作:

#!/usr/bin/env bash

aws iam list-users --output text > users.txt

cut -f6 users.txt | while read user ; do
  (echo $user ; aws iam list-groups-for-user \
      --user-name $user \
      --output text) | paste - - >> groups.txt
done

join -1 6 -2 1 users.txt groups.txt

注意:

  • 指定--output text会导致所有AWS CLI命令返回制表符分隔的数据。因此,第一行从users.txt创建了一个“表” aws iam list-users
  • 请注意,cut命令将制表符用作其默认定界符。因此,我们从第6个字段中读取了该用户,并为每个用户运行aws iam list-groups-for-user
  • 请注意,paste - -命令可将前两行文本“粘贴”在同一行上。这样做的目的是将用户添加到groups.txt表中的字段中,以便我们可以在其后的字段中“加入”。
  • join -1 6 -2 1 users.txt groups.txt就像users.txtgroups.txt表上的SQL连接。 -1 6说使用第一个文件中的第六个字段,-2 1说使用第二个文件中的第一个字段作为要加入的字段。

如果要删除输出中的某些字段,则可以修改join命令。为此,请指定要通过-o包含的字段列表。例如

join -o 1.6,1.3,1.4,1.5,2.6,2.3,2.4,2.5,2.7 -1 6 -2 1  users.txt groups.txt

这表示从第一个文件中选择第六,第三,第四,第五字段,并从第二文件中选择第六,第三,第四,第五和第七字段。