List public IP addresses of EC2 instances

2020-02-08 05:38发布

I want to list the public IP addresses of my EC2 instances using Bash, separated by a delimiter (space or a new-line).

I tried to pipe the output to jq with aws ec2 describe-instances | jq, but can't seem to isolate just the IP addresses.

Can this be done by aws alone, specifying arguments to jq, or something else entirely?

5条回答
We Are One
2楼-- · 2020-02-08 05:47
  • Filter on running instances (you can drop that part if you don't need it)
  • Query for each PublicIPaddress and the Name Tag, handling when Name isn't set

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

查看更多
\"骚年 ilove
3楼-- · 2020-02-08 05:55

The below command would list the IP addresses of all your running EC2 instances

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

Hope that answers your query.

查看更多
小情绪 Triste *
4楼-- · 2020-02-08 05:56
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"

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

查看更多
The star\"
5楼-- · 2020-02-08 06:04

Directly from the aws cli:

aws ec2 describe-instances \
  --query "Reservations[*].Instances[*].PublicIpAddress" \
  --output=text
查看更多
在下西门庆
6楼-- · 2020-02-08 06:10

You can use instance metadata so you can run the following command from the ec2 instance:

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

and it will give you the public IP of the instance. If you want the private IP, you will run

curl http://169.254.169.254/latest/meta-data/local-ipv4
查看更多
登录 后发表回答