我想用python SDK控制Azure中的VM。是否有任何API可以根据VM的名称获取VM的IP地址(内部或外部)?
答案 0 :(得分:5)
根据我的理解,我认为你想要获得公众和使用Azure SDK for Python的Azure VM的私有IP地址。
要获取这些IP地址(内部和外部),请参阅以下代码。
from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration
subscription_id = '33333333-3333-3333-3333-333333333333'
credentials = ...
network_client = NetworkManagementClient(
NetworkManagementClientConfiguration(
credentials,
subscription_id
)
)
GROUP_NAME = 'XXX'
VM_NAME = 'xxx'
PUBLIC_IP_NAME = VM_NAME
public_ip_address = network_client.public_ip_addresses.get(GROUP_NAME, PUBLIC_IP_NAME)
print(public_ip_address.ip_address)
print(public_ip_address.ip_configuration.private_ip_address)
作为参考,您可以参考以下文档了解上述代码的详细信息。
credentials
。network_client
。azure.mgmt.network
包的详细信息,请参阅http://azure-sdk-for-python.readthedocs.io/en/latest/ref/azure.mgmt.network.html。答案 1 :(得分:0)
对于没有为其VM分配公共IP的人,有一种方法可以在不创建公共IP的情况下获取私有IP。
from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration
subscription_id = ''
credentials = UserPassCredentials(
'user@yes.com',
'password',
)
network_client = NetworkManagementClient(
credentials,
subscription_id
)
private_ip = network_client.network_interfaces.get(GROUP_NAME, NETWORK_INTERFACE_NAME).ip_configurations[0].private_ip_address
这可以在azure-sdk-for-python版本2.0.0rc6上进行测试。