列出EC2实例的公共IP地址



我想使用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

相关内容

  • 没有找到相关文章

最新更新