[英]python sdk resource group
我正在使用 python 來獲取 vnet、子網和所有正在使用的 IP 地址(以及 RG 的標簽)。
我想使用 get_client_from_cli_profile 並通過 az login 登錄。
我有許多訂閱,但我無法列出每個訂閱的所有 RG。
def test():
subscription_client = get_client_from_cli_profile(SubscriptionClient)
resource_client = get_client_from_cli_profile(ResourceManagementClient)
out = ''
for g in subscription_client.subscriptions.list():
for v in resource_client.resource_groups.list(subscription_id=g.subscription_id):
out = out + '\n' + " " + g.subscription_id + " " + v.name
return out
print(test())
此代碼為每個訂閱顯示相同的 RG。 您知道如何列出 vnet 中的所有子網嗎? 你知道我如何列出每個子網中的所有 IP 地址嗎? 我想檢查使用了哪些 IP 地址。
根據您的要求,您使用的身份驗證不合適。 您可以看到 CLI 配置文件的描述:
返回使用當前 CLI 憑據、CLI 默認訂閱和 CLI 默認雲初始化的 SDK 客戶端。
此代碼為每個訂閱顯示相同的 RG
據我所知,只有一個訂閱設置為默認值。 登錄時可以在 output 中看到。所以即使設置了不同的訂閱,你也得到了相同的組。 並查看該組的列表 function:
Gets all the resource groups for a subscription.
它沒有參數作為subscription_id。 參數filter
只是用來過濾同一個訂閱中的組。
您可以像這樣更改代碼以循環不同的訂閱並獲取不同訂閱中的組:
import subprocess
def test():
subscription_client = get_client_from_cli_profile(SubscriptionClient)
out = ''
for g in subscription_client.subscriptions.list():
cmd = f"az account set --subscription {g.subscription_id}"
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
out, err = result.communicate()
resource_client = get_client_from_cli_profile(ResourceManagementClient)
for v in resource_client.resource_groups.list():
out = out + '\n' + " " + g.subscription_id + " " + v.name
return out
您知道如何列出 vnet 中的所有子網嗎? 你知道我如何列出每個子網中的所有 IP 地址嗎?
獲取 VNet 的子網。 您可以使用列表function。 這個 function 會給你子網的地址前綴。 這意味着您可以使用什么 IP 地址。 沒有function可以一一列出子網的所有IP地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.