我编写了一个shell脚本,通过http://checkip.amazonaws.com
中的curl
获取我的IP地址
我要做的是获取所有安全组的列表,并通过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
变量之后的所有内容。
有什么想法吗?
答案 0 :(得分:2)
而不是减号,您键入了一个短划线(Unicode U + 2013)。因此,只需将–p
替换为-p
。
我注意到your answer,你没有意识到这一点。这就是为什么它有效,而不是因为你把args放入var。
这就是错误消息中出现问号的原因:[ ?p, 22 ]