我想使用Bash列出我的EC2实例的公共IP地址,用分隔符(空格或换行符)分隔。
我尝试将输出通过aws ec2 describe-instances | jq
传输到jq,但似乎无法隔离IP地址。
这可以仅由aws
完成,指定jq
的参数,还是其他完整的参数?
答案 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