我有一个脚本,我用它来运行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。
答案 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}]"