2016-09-16 43 views
0

嗨,大家好,我需要做一个脚本,它将aips区域的AMIs复制到我已经运行的AMI中,复制这些IP后将它们放入一个文本文件中。如果实例被关闭,那么IP将被删除,并且文本文件将自动实时更改,我需要它在所有区域中运行,所以任何具有“X”AMI的实例都将运行,脚本会找到它,复制它的IP,如果它正在运行,则保留它,如果它们切换到关闭模式,则将其从文件中删除。复制清单中的IP AWS

堆在文本中的IP像

55.555.555.55

66.123.545.54

.....

.....

实时。

我从来没有真正使用aws cli,我知道这是可以做到的。

+0

你想要的AMI或实例的IP地址? – error2007s

回答

1

在AWS CLI中使用describe-instances命令。所有您需要的信息(AMI,实例状态,IP地址)都将包含在该命令的响应中。请注意,您必须为每个区域运行describe-instances一次。 (在运行CLI设置区域时设置--region标志)。

您可以解析CLI的JSON输出,但是您想要将所需信息写入文本文件。

+1

在我的回答中,我刚刚使用sed去掉地址,但我同意,更好的解决方案是使用JSON解析器,如“jq” – Vorsprung

1

此命令使用带有筛选器的aws cli“describe-instances”命令,仅用于正在运行的实例。

这会输出大量数据,包括“PublicIp”字段。该sed命令带了刚刚从该行的IP地址和uniq删除重复

aws ec2 describe-instances --filters 'Name=instance-state-name,Values=running' | sed -n 's/^.*"PublicIp": "\([0-9\.]*\)\",/\1/p'| uniq 

有关详细信息,请参见http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html的AWS CLI描述实例命令,包括其他的过滤器,你可能要申请