-1

我编写了一个 shell 脚本,通过 http://checkip.amazonaws.com 获取我的curlIP地址

我试图做的是获取我所有安全组的列表,并通过 AWS CLI 将该 IP 地址添加到每个安全组。

我到目前为止的脚本是:

#!/bin/bash

# Get IP Address
IP_ADDR="`curl http://checkip.amazonaws.com`"
IP_ADDR="$IP_ADDR/32"

cat /dev/null > /tmp/ec2.info

tmpFile="/tmp/ec2.info"

ec2Info=`ec2-describe-group --region eu-west-1 > $tmpFile`

sec_groups=`cat $tmpFile | grep GROUP | cut -f4`

echo "You are using IP Address:  $IP_ADDR"
echo ""

for security_group in $sec_groups
do

     echo ""
     echo $security_group
     echo ""

     ec2-authorize --region eu-west-1 $security_group –p 22 -s $IP_ADDR

done

该脚本可以正常获取 IP 地址和我的安全组列表。但是,当脚本到达该ec2-authorize行时,我遇到了一个问题。

我收到一条错误消息:

WARNING:  Ignoring extra parameter(s): [ ?p, 22 ]
Required option '-p, --port-range PORT-RANGE' missing (-h for usage)

正如您从脚本中看到的那样,我添加了-p指定端口的参数。它似乎忽略了$security_group变量之后的所有内容。

有任何想法吗?

4

1 回答 1

2

您输入的不是减号,而是短划线 (Unicode U+2013)。所以只需替换–p-p.

我在您的回答中注意到,您在没有意识到的情况下解决了这个问题。这就是它起作用的原因,而不是因为您将 args 放入 var。

这就是错误消息中有问号的原因:[ ?p, 22 ]

于 2017-03-03T00:55:09.913 回答