【问题标题】:How can I get all External IP Addresses in my GCP organization?如何获取 GCP 组织中的所有外部 IP 地址?
【发布时间】:2022-04-21 09:43:10
【问题描述】:

我想获取我的 GCP 组织中的所有外部 IP 地址。此信息似乎在 GCP Console 中的 VPC 网络 > 外部 IP 地址下可用,但我似乎找不到 API 或导出此信息的方法。

我试过 GCLOUD 命令行工具,但它只列出静态 IP 地址。我还想要临时地址:gcloud compute addresses list

Go GCP Compute API 也是如此。

【问题讨论】:

    标签: google-cloud-platform


    【解决方案1】:

    Google Cloud 中有两种类型的公共(外部)IP 地址:区域性和全球性。

    以下命令使用 Windows 语法。修改项目ID和区域列表的每个命令。

    此命令将列出指定区域的区域地址:

    gcloud compute addresses list  --project development --filter="region:( us-west1, us-west2 )"
    

    此命令将列出全局地址:

    gcloud compute addresses list --global --project development
    

    请注意,必须为每个项目重复此操作。组织没有选择。

    列出您的凭据有权访问的项目:

    gcloud projects list
    

    这并不意味着此列表中的所有项目都是您组织的一部分。可以将凭据添加为组织外部项目中的成员帐户。

    这并不意味着您组织中的所有项目都已列出。只有那些有权列出/访问项目的人。您的组织可能正在使用文件夹。

    以下链接适用于 API:

    Method: addresses.list

    【讨论】:

      【解决方案2】:

      正如之前的回复中提到的,没有简单的方法可以获取这些信息。

      我在自己的项目中尝试了一些命令,我​​可以列出我的实例上的所有外部临时 IP:

      gcloud compute instances describe INTANCE_NAME --format='get(networkInterfaces[0].accessConfigs[0].natIP)' --zone ZONE
      gcloud compute instances list --format='table(EXTERNAL_IP)'
      

      我还找到了另一个public tracker,他们的要求与你提到的几乎相同,你可以看看那里并发表评论。

      【讨论】:

        【解决方案3】:

        要实现这个目标,你可以使用类似这样的东西

        PROJECTS=$(gcloud projects list --format="value(name)")
        
        for project in $PROJECTS
        do
            if [[ $(gcloud services list --project $project --format="table(NAME)" | sed '1d') =~ "compute.googleapis.com" ]];then
               echo $project
               gcloud compute addresses list --project $project --global
            fi
        done
        

        【讨论】:

          【解决方案4】:

          Google Cloud 使用随时间变化的各种 IP 地址。根据link,最近的方法是使用 DNS 查找命令(nslookupdighost)手动清理多个地址并与静态地址进行比较并挑选出临时地址。

          话虽如此,如果可以将标志添加到命令gcloud compute addresses list 以列出临时 IP,则正在评估此功能的公共跟踪器: https://issuetracker.google.com/119178618

          这里是另一个相关的话题:https://stackoverflow.com/a/53650099

          【讨论】:

            【解决方案5】:

            通过在 Linux 上运行以下命令,我设法获得了Ephemeral IP 地址。

            GCP console shows (VPC network -> External IP addresses):
                - XX.XX.XX.XX us-west2 Ephemeral
                vmnumber1 XX.XX.XX.XX us-west2 Static
                vmnumber2 XX.XX.XX.XX us-west2 Static
            
            These are the Static Public IPs (gcloud does not show Ephemeral IP addresses)
                gcloud --project your_project_name compute addresses list --format="value(ADDRESS)" | sort | tee -a static_public_ips
                    XX.XX.XX.XX
                    XX.XX.XX.XX
            
            These are the Public IPs assigned to instances, it may include (Static and Ephemeral IP addresses)
                gcloud --project your_project_name compute instances list --filter="EXTERNAL_IP!=NULL" --format="value(EXTERNAL_IP)" | sort | tee -a static_public_ips_assigned
                    XX.XX.XX.XX
                    XX.XX.XX.XX
            
            Then we can compare the two files, but we want the IPs that are not in `static_public_ips` which are the `Ephemeral` ones.
                diff -u static_public_ips static_public_ips_assigned | sed -n '/^+[^+]/ s/^+//p'
                    XX.XX.XX.XX
            

            【讨论】:

              【解决方案6】:
              #!/bin/bash -e
              
              PROJECTS=$(gcloud projects list --format="value(project_id)" | sort | uniq)
              
              for project in $PROJECTS
              do
                  if [[ $(gcloud services list --project $project --format="table(NAME)" | sed '1d') =~ "compute.googleapis.com" ]];then
                     echo $project
                     gcloud compute addresses list --project $project
                     gcloud compute addresses list --project $project --global
                  fi
              done
              

              【讨论】:

                猜你喜欢
                • 2023-03-05
                • 2021-07-06
                • 2013-08-24
                • 2012-01-07
                • 2017-01-26
                • 2021-11-20
                • 2013-04-03
                • 2016-03-10
                相关资源
                最近更新 更多