簡體   English   中英

python sdk 資源組

[英]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.

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