我尝试使用以下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的单行输出。
答案 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