簡體   English   中英

如何在我的 GCP 組織中獲取所有外部 IP 地址?

[英]How can I get all External IP Addresses in my GCP organization?

我想在我的 GCP 組織中獲取所有外部 IP 地址。 此信息似乎在 VPC.network > 外部 IP 地址下的 GCP 控制台中可用,但我似乎找不到 API 或導出此信息的方法。

我試過 GCLOUD 命令行工具,但它只列出了 STATIC ip 地址。 我還想要臨時地址: gcloud compute addresses list

Go GCP 計算 API 做同樣的事情。

GCP 中有兩種類型的公共(外部)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:

方法:addresses.list

為了實現這個目標,你可以使用這樣的東西

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

正如在之前的回復中提到的,沒有簡單的方法來獲取這些信息。

我在自己的項目中嘗試了一些命令,我​​可以列出我的實例上的所有外部臨時 IP:

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

我還發現了另一個公共跟蹤器,他們的要求與您提到的幾乎相同,您可以查看並評論那里的內容。

#!/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

Google Cloud 使用隨時間變化的各種 IP 地址。 根據此鏈接,最近的方法是使用 DNS 查找命令( nslookupdighost )手動清理多個地址並與靜態地址進行比較並挑選出臨時地址。

話雖如此,如果可以將標志添加到命令gcloud compute addresses list以列出臨時 IP,則正在評估此功能的公共跟蹤器: https : gcloud compute addresses list

這是另一個相關主題: https : //stackoverflow.com/a/53650099

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM