如何传递“aws iam list-users”的所有输出并引用用户名,以便从“aws iam list-groups-for-user”中提取所有相应的信息?最好是一个漂亮整洁的.tsv文件。
to94eoyn1#
要将aws iam list-users和aws iam list-groups-for-user的迭代返回的表连接(在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
users.txt
paste - -
groups.txt
join -1 6 -2 1 users.txt groups.txt
-1 6
-2 1
如果你想删除输出中的一些字段,你可以修改join命令,通过-o指定一个要包含的字段列表。
-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
这表示从第一个文件中选择第6、3、4、5个字段,从第二个文件中选择第6、3、4、5和7个字段。
3j86kqsm2#
这可能会让你开始:
#!/usr/bin/env bash users="$(aws iam list-users \ --query 'Users[].UserName' \ --output text )" for user in $users ; do groups="$(aws iam list-groups-for-user \ --user-name $user \ --query 'Groups[].GroupName' \ --output text \ | paste -s -d, - # join newlines as comma-separated values )" printf "%s\t%s\n" "$user" "$groups" done
2条答案
按热度按时间to94eoyn1#
要将
aws iam list-users
和aws iam list-groups-for-user
的迭代返回的表连接(在SQL意义上)为制表符分隔的数据,可以尝试如下操作:注:
--output text
会导致所有AWS CLI命令返回制表符分隔的数据。因此,第一行从aws iam list-users
创建一个"表"users.txt
。aws iam list-groups-for-user
。paste - -
命令将前面两行文本"粘贴"到同一行上,其目的是将用户添加到groups.txt
表的一个字段中,这样我们就有了一个可以"连接"的字段。join -1 6 -2 1 users.txt groups.txt
类似于users.txt
和groups.txt
表上的SQL联接。-1 6
表示使用第一个文件中的第6个字段,-2 1
表示使用第二个文件中的第1个字段作为联接的字段。如果你想删除输出中的一些字段,你可以修改join命令,通过
-o
指定一个要包含的字段列表。这表示从第一个文件中选择第6、3、4、5个字段,从第二个文件中选择第6、3、4、5和7个字段。
3j86kqsm2#
这可能会让你开始: