用于添加安全组的AWS CLI脚本

时间:2018-04-05 05:51:07

标签: bash shell amazon-web-services aws-cli

我有一个脚本,我用它来运行authorize-security-group-ingress AWS CLI命令。

IP = 10.10.10.10
CIDR = 32
Variable = sudo aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --ip-permissions FromPort=10,ToPort=23,IpProtocol=tcp,IpRanges='[{CidrIp=$((IP / 32))}]'
$Variable

但我收到错误CIDR block $((IP / 32)) is malformed。我尝试将$((IP / 32))块更改为$IP/32($(IP) / $(CIDR)),但我似乎仍然遇到同样的错误。有人能告诉我我做错了什么吗?主要问题是转换为有效的IP CIDR。

2 个答案:

答案 0 :(得分:0)

你有没有试过这个

'[{"IpProtocol":"tcp","IpRanges": [{"CidrIp": "10.10.10.10/32"}]}]'

用这个代替你的代码行。

答案 1 :(得分:0)

你可以像Siddarth提到的那样做。或者,修复您的查询。您的代码的问题在于您使用单引号(')而不是双引号(")用于IpRanges。根据{{​​3}} SO问题,单引号不会插入任何内容,但双引号会出现。

更换后,您的脚本将再次失败,因为$((...))是算术扩展。删除脚本中的(()),它应该可以正常工作。

最终解决方案:

aws ec2 authorize-security-group-ingress --group-id sg-xxxxxx --ip-permissions FromPort=10,ToPort=23,IpProtocol=tcp,IpRanges="[{CidrIp=$IP/$CIDR}]"