首页 > 解决方案 > 如何在 GCE - Google Compute Engine 上获取特定实例组的外部 IP?

问题描述

$ gcloud --format="value(networkInterfaces[0].accessConfigs[0].natIP)" compute instances list

此命令当前可用于获取所有处于活动状态的 ip,但如果我有多个实例组,可以说一个称为:Office,另一个称为 Home

如何仅获取实例组“Office”中的实例 IP

标签: google-compute-engine

解决方案


不幸的是,没有简单的方法可以做到这一点。理想情况下,它应该是 gcloud instance-groups list-instances API 的一部分,但它不返回 IP 地址,只返回实例名称。

到目前为止,我已经设法通过执行 2 个不同的命令来获得所需的响应。

  1. 获取所有实例的名称

instances=$(gcloud beta compute instance-groups list-instances <Enter Your Instance Group Name Here> | awk -v ORS=, '{if(NR>1)print $1}')

  1. 获取外部 IP

gcloud --format="value(networkInterfaces[0].accessConfigs[0].natIP)" compute instances list --filter="name=( $instances )"

第一个命令的细分/解释:

  • gcloud beta compute instance-groups list-instances <Enter Your Instance Group Name Here>将返回该实例组中的所有实例
  • awk -v ORS=,将所有行替换为 , 并返回一个逗号分隔的字符串
  • 'if(NR>1)将排除响应的第一行,即 NAME
  • print $1只会得到第一列,它们是实例名称
  • instances=$(<Entire Gcloud Command with awk)将捕获变量中的响应

第二个命令应该是不言自明的。

如果有人可以将这两个命令组合成一个命令,那就太好了。


推荐阅读