【问题标题】:GCloud: Filter IP Address by 'In Use by' Column as seen in GCP ConsoleGCloud:按 GCP 控制台中的“正在使用”列过滤 IP 地址
【发布时间】:2022-06-20 17:14:51
【问题描述】:

我正在尝试过滤掉路由器使用的外部 IP 地址。当我运行地址列表命令时,我无法使用名称进行过滤,因为它是由 NAT 自动创建的:

 gcloud compute addresses list
NAME                                     ADDRESS/RANGE    TYPE      PURPOSE      NETWORK                       REGION        SUBNET  STATUS
test-network-1234                       10.xxx.0.0/18    INTERNAL  VPC_PEERING  test-network-gcp-1                                  RESERVED
test-network-abcd                       10.xxx.xx.0/18   INTERNAL  VPC_PEERING  test-network-gcp-1                                  RESERVED
nat-auto-ip-15564773-5-xx               xx.xxx.xx.x     EXTERNAL  NAT_AUTO         IN_USE

在控制台中,我可以看到“In use by”“Router abcd”列。有什么方法可以使用此“使用中”参数进行过滤?

编辑:添加控制台截图

【问题讨论】:

  • 我不熟悉这个命令。请附上控制台页面的屏幕截图。当您说“过滤器”时,您的具体意思是在输出中包含|排除(?)该行吗?或者,你的意思是不同的?
  • 底层 REST API 方法记录在此处addresses:listgcloud 用于形成输出的响应正文在此处定义Response Body。您可以使用gcloud --format=... 根据您的要求重新格式化输出
  • 是的,有一个IP被路由器使用。我需要获取此 IP 地址,通过控制台查看的唯一方法是通过“正在使用”列(已添加屏幕截图)。无论如何要使用此列中的值过滤掉该 IP。谢谢!

标签: google-cloud-platform gcloud nat vpc


【解决方案1】:

编辑:发现这一点,与其他 GCP 值一样,由用户表示的“正在使用”列(在此 reponse-body 中给出)作为 API URL 给出。

所以我必须创建一个 URL 并传递以下值:

api_url="https://www.googleapis.com/compute/v1/projects/${landscape_project}/regions/${landscape_region}/routers/${router_name}"

external_ip="$(gcloud compute addresses list --filter="users=('${api_url}')" --format=json | jq -r '.[].address')"

通过这种方式,我能够传递 router_name 并创建 API URL 并将其作为过滤器传递以获取外部 IP。

希望这对某人有所帮助

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    相关资源
    最近更新 更多