【问题标题】:AWS CLI Script to add security groups用于添加安全组的 AWS CLI 脚本
【发布时间】:2018-04-05 19:25:03
【问题描述】:

我有一个用于运行 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。

【问题讨论】:

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


    【解决方案1】:

    你可以像 Siddarth 所说的那样做。或者,修复您的查询。您的代码的问题是您对 IpRanges 使用单引号 (') 而不是双引号 (")。根据this SO 问题,单引号不会插入任何内容,但双引号会。

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

    最终解决方案:

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

    【讨论】:

    • 试过了,但它给了我一个类似的错误。 sudo aws ec2 authorize-security-group-ingress --group-id sg-xxxx --ip-permissions FromPort=10,ToPort=23,IpProtocol=tcp,IpRanges="[{CidrIp=$IP/$CIDR}]"CIDR block / is malformed
    • 能分享一下IP和CIDR变量的值吗?
    • 它实际上是通过使用你的方式并通过更正我声明变量的方式来工作的。它应该是 IP=10.10.10.10 而不是 IP = 10.10.10.10CIDR 相同。
    【解决方案2】:

    你有没有这样尝试过

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

    用这个替换你的代码行对我有用。

    【讨论】:

    • 是的,我已经尝试过了。这对我也有用。我正在尝试从另一个文件中获取 IP,所以我暂时将其硬编码为 IP。
    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2015-11-19
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多