我想使用Bash列出我的EC2实例的公共IP地址,用分隔符(空格或新行(分隔。
我试图用aws ec2 describe-instances | jq
将输出管道传输到jq,但似乎无法仅隔离IP地址。
这可以由aws
单独完成,为jq
指定参数,或者完全由其他方法完成吗?
直接从aws-cli:
aws ec2 describe-instances
--query "Reservations[*].Instances[*].PublicIpAddress"
--output=text
- 对正在运行的实例进行筛选(如果不需要,可以删除该部分(
- 查询每个PublicIP地址和Name标记,在未设置Name时进行处理
aws ec2 describe-instances
--filter "Name=instance-state-name,Values=running"
--query "Reservations[*].Instances[*].[PublicIpAddress, Tags[?Key=='Name'].Value|[0]]"
--output text
下面的命令将列出所有正在运行的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 .
您可以使用实例元数据,以便从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
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"
参考:http://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html