pythonsdk资源组

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配置文件的描述:

Return a SDK client initialized with current CLI credentials, CLI default subscription and CLI default cloud.

此代码显示每个订阅的相同 RG

据我所知,默认只有一个订阅。您可以在登录时在输出中看到这一点。因此,即使您设置了不同的订阅,您也会得到相同的组。并查看组的列表函数:

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 的子网。您可以使用 list 函数。此函数将为您提供子网的地址前缀。这意味着您可以使用的 IP 地址。没有一一列出所有子网IP地址的功能。