如何在我的GCP组织中获取所有外部IP地址?

时间:2019-05-07 00:47:50

标签: google-cloud-platform

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

我尝试了GCLOUD命令行工具,但它仅列出了STATIC ip地址。我还需要临时地址:gcloud compute addresses list

Go GCP Compute API的作用相同。

5 个答案:

答案 0 :(得分:1)

要实现此目标,您可以使用类似的

gradlew --version

答案 1 :(得分:0)

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

如上所述,此功能有一个公共跟踪器,正在评估是否可以将标志添加到命令gcloud compute addresses list中以列出临时IP: https://issuetracker.google.com/119178618

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如先前的答复所述,没有简单的方法来获取该信息。

我在自己的项目中尝试了一些命令,并且可以在实例上列出所有外部临时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,他们在这里要求的内容几乎与您提到的相同,请允许您看一下并在其中发表评论。

答案 4 :(得分:0)

通过在 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