列出EC2实例的公共IP地址

时间:2014-07-24 16:16:18

标签: bash amazon-web-services amazon-ec2 aws-cli jq

我想使用Bash列出我的EC2实例的公共IP地址,用分隔符(空格或换行符)分隔。

我尝试将输出通过aws ec2 describe-instances | jq传输到jq,但似乎无法隔离IP地址。

这可以仅由aws完成,指定jq的参数,还是其他完整的参数?

5 个答案:

答案 0 :(得分:82)

直接来自aws cli

aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].PublicIpAddress" \
  --output=text

答案 1 :(得分:5)

以下命令将列出所有正在运行的EC2实例的IP地址

aws ec2 describe-instances | grep PublicIpAddress | grep -o -P "\d+\.\d+\.\d+\.\d+" | grep -v '^10\.'

希望能回答您的问题。

答案 2 :(得分:5)

  • 过滤正在运行的实例(如果不需要,可以删除该部分)
  • 查询每个PublicIPaddress和名称标签,处理未设置名称时

    aws ec2 describe-instances --filter“Name = instance-state-name,Values = running” --query“Reservations []。Instances []。[PublicIpAddress,Tags [?Key =='Name']。Value | [0]]” - output text

答案 3 :(得分:4)

您可以使用instance metadata,以便从ec2实例运行以下命令:

curl http://169.254.169.254/latest/meta-data/public-ipv4

它将为您提供实例的公共IP。如果您想要私有IP,您将运行

curl http://169.254.169.254/latest/meta-data/local-ipv4

答案 4 :(得分:3)

aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"

参见: http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html