51

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

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

这可以通过aws单独、指定参数jq或完全其他方式来完成吗?

4

5 回答 5

115

直接来自aws cli

aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].PublicIpAddress" \
  --output=text
于 2014-07-24T17:00:56.840 回答
17
  • 过滤正在运行的实例(如果不需要,可以删除该部分)
  • 查询每个 PublicIPaddress 和 Name Tag,在 Name 未设置时处理
aws ec2 describe-instances \
  --filter "Name=instance-state-name,Values=running" \
  --query "Reservations[*].Instances[*].[PublicIpAddress, Tags[?Key=='Name'].Value|[0]]" \
  --output text
于 2018-04-10T13:09:21.720 回答
7

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

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

希望能解答您的疑问...

但这在没有关于访问的所有错误的情况下有效:

wget -qO- http://instance-data/latest/meta-data/public-ipv4/|grep .
于 2014-07-24T16:43:17.573 回答
5

您可以使用实例元数据,以便从 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
于 2017-09-20T13:42:03.827 回答
4
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"

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

于 2017-01-03T07:15:37.797 回答