![](/img/trans.png)
[英]Google Cloud/GCP - Find all Ephemeral external IP addresses in use by GCP instrances
[英]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:
為了實現這個目標,你可以使用這樣的東西
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 查找命令( nslookup
、 dig
或host
)手動清理多個地址並與靜態地址進行比較並挑選出臨時地址。
話雖如此,如果可以將標志添加到命令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.