我正在尝试编写一个非常简单的脚本,并且对aws cli还是相当陌生。使用我的脚本,我将输出允许所有打开的IP(0.0.0.0/0)的所有安全组ID,并且我正在使用
aws ec2 describe-security-groups --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --region "$region" --query 'SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:"$region"}' --output table.
将region
在脚本中,因为我经历的所有地区的前面部分定义。
但是,在显示该表时,“区域”列显示None
。如何仅使用aws ec2 describe-security-groups
过滤器来包含区域,这样它就不会输出None?
该region
不会在命令的输出存在的,所以你不能看的价值region
。
因此,另一个选择是扩展的值,$region variable
然后使用转义序列将值打印为静态值。
Region:\``echo $region`\`
您可以使用
export region=us-east-1 && aws ec2 describe-security-groups --region=$region --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table
样品输出
---------------------------------------------------------------------------------------
| DescribeSecurityGroups |
+-------------------------------+------------+------------------------+---------------+
| Name | Region | sg | vpc |
+-------------------------------+------------+------------------------+---------------+
| launch-wizard-17 | us-west-2 | sg-12345 | vpc-12345 |
AWS-cli
针对区域,因此您可以一次获取security group
所有区域,以使用下面的脚本从所有区域中获取。
#!/bin/bash
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
echo "SG for region ${region}"
aws ec2 describe-security-groups --region=$ --filters Name=ip-permission.cidr,Values='0.0.0.0/0' --query "SecurityGroups[*].{Name:GroupName,vpc:VpcId,sg:GroupId,Region:\``echo $region`\` }" --output table
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句