如何从aws ec2命令获取IP地址

时间:2017-08-09 11:37:35

标签: amazon-web-services amazon-ec2 aws-cli

我尝试使用以下aws命令获取实例详细信息

aws ec2 describe-instances --filters "Name=instance.group-name, Values=index-cores"

然而,它以json格式提供输出。所以我尝试在输出上跟随grep

aws ec2 describe-instances --filters "Name=instance.group-name, Values=index-cores"|grep -w "PrivateIpAddress"|sort -u

但结果仍不如预期。

任何人都可以建议如何获得每个IP的单行输出。

4 个答案:

答案 0 :(得分:2)

尝试:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=XXXXXX' --output text --query 'Reservations[].Instances[].[PrivateIpAddress,Tags[?Key==`Name`].Value[]]'

返回在值中传递的服务器的IP和名称,如果您需要公共地址,则可以使用查询参数。

不使用过滤器返回所有IP和EC2的名称。

答案 1 :(得分:2)

如果您只想要IP:

aws ec2 describe-instances --filters <your-filter>
    --query 'Reservations[*].Instances[*].[PrivateIpAddress]' --output text

输出:

10.4.1.100
10.7.12.212
10.10.10.100

<小时/> 如果您希望将单行中的IP分隔为逗号:

aws ec2 describe-instances --filters <your-filter>
    --query 'Reservations[*].Instances[*].[PrivateIpAddress]' --output text | paste -sd,

输出:

10.4.1.100,10.7.12.212,10.10.10.100

<小时/> 如果您希望将单个行空间中的IP分开:

aws ec2 describe-instances --filters <your-filter>
    --query 'Reservations[*].Instances[*].[PrivateIpAddress]' --output text | paste -sd' '

输出:

10.4.1.100 10.7.12.212 10.10.10.100

答案 2 :(得分:0)

下面是不使用CLI获取ec2实例的公共IP的另一种方法。

从ec2实例运行:

wget ipinfo.io/ip
cat ip

答案 3 :(得分:0)

这似乎很好用:

aws ec2 describe-instances \ --region eu-west-1 \ --instance-ids \ --query Reservations[].Instances[].PrivateIpAddress \ --filters "Name=tag:Name,Values=instance_name" \ --output=text

由于我已经看到上面的示例在结果中返回none,所以我会仔细检查。

10.1.12.123
None