python группа ресурсов SDK - PullRequest
       45

python группа ресурсов SDK

0 голосов
/ 01 августа 2020

Я использую python для получения виртуальных сетей, подсетей и всех используемых 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-адреса в каждом su bnet? Я хочу проверить, какие IP-адреса используются.

1 Ответ

0 голосов
/ 03 августа 2020

По вашему требованию используемая вами аутентификация не подходит. Вы можете увидеть описание профиля CLI:

Возврат клиента SDK, инициализированного с текущими учетными данными CLI, подпиской CLI по умолчанию и облаком CLI по умолчанию.

Это код показывает одну и ту же группу RG для каждой подписки

Насколько я знаю, по умолчанию будет установлена ​​только одна подписка. Вы можете увидеть это на выходе, когда войдете в систему. Таким образом, у вас одинаковые группы, даже если вы установили разные подписки. И взгляните на функцию списка для группы:

Gets all the resource groups for a subscription.

У нее нет параметра в качестве subscription_id. Параметр filter просто используется для фильтрации группы в одной подписке.

Вы можете изменить код следующим образом на l oop для разных подписок и получить группы в разных подписках:

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-адреса в каждом su bnet?

Чтобы получить подсети VNet. Вы можете использовать функцию список . Эта функция даст вам адресный префикс su bnet. Это означает, какой IP-адрес вы можете использовать. Нет функции для перечисления всех IP-адресов su bnet по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...