我正在尝试查找附加到正在运行的Azure VM的公共IP地址。
我已经按照Get IP from VM object using azure sdk in python尝试了两个答案,但没有得到所需的输出。 获取公共IP:无
...: for interface in vm.network_profile.network_interfaces:
...: name=" ".join(interface.id.split('/')[-1:])
...: print (name)
...: sub="".join(interface.id.split('/')[4])
...: print (sub)
...: thing = network_client.network_interfaces.get(sub, name).ip_configurations
...: for x in thing:
...: print (x.public_ip_address)
...:
xxx
xxx
{'additional_properties': {}, 'id': '/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/publicIPAddresses/Test-ip', 'name': None, 'type': None, 'location': None, 'tags': None, 'sku': None, 'public_ip_allocation_method': None, 'public_ip_address_version': None, 'ip_configuration': None, 'dns_settings': None, 'ddos_settings': None, 'ip_tags': None, 'ip_address': None, 'public_ip_prefix': None, 'idle_timeout_in_minutes': None, 'resource_guid': None, 'provisioning_state': None, 'etag': None, 'zones': None}
而使用network_client我却得到了输出
In [6]: from azure.mgmt.network import NetworkManagementClient
In [21]: for i in network_client.public_ip_addresses.list("xxx"):
...: print (i)
但是在这里,我获得了所有订阅,所有资源组的输出,这些资源组基本上是我想要过滤的。 因此,我认为使用custom_headers可以进行过滤,但是我没有得到为custom_headers创建的dict的确切命名约定。
答案 0 :(得分:1)
简短版本:您的问题已在Github上得到解决: https://github.com/Azure/azure-sdk-for-python/issues/897
一些评论:
custom_headers
用于定义HTTP标头,这对您的情况没有帮助:NetworkManagementClient
时您已经按订阅进行了过滤,因为订阅是它的参数。public_ip_addresses.list
的参数是资源组名称,因此您已经按资源组名称进行过滤:请参见https://docs.microsoft.com/en-us/python/api/azure-mgmt-network/azure.mgmt.network.v2019_04_01.operations.publicipaddressesoperations?view=azure-python#list-resource-group-name--custom-headers-none--raw-false----operation-config- public_ip_addresses.get
中。由于计算原因,NIC无法扩展到实际的公共IP值。(我在Python SDK团队的MS部门工作)