2016-05-17 102 views
2

我想用python SDK控制Azure中的虚拟机。是否有任何API可以根据虚拟机的名称获取虚拟机的IP地址(内部或外部)?是否有任何可以获取Azure虚拟机IP地址(内部或外部)的Python API

+0

我相信这个问题可能会在[此堆栈溢出问题]回答(http://stackoverflow.com/questions/166506/finding-local-ip-addresses-using-pythons-stdlib) –

+0

我的意思是获取IP地址具有Azure Python SDK的虚拟机。这是因为我想用它的SDK远程控制Azure中的虚拟机。这是一个不同的问题。 –

+0

你可能需要澄清一下这个问题。这是来自虚拟机内部,还是来自某处的控制机器? – Shayne

回答

5

基于我的理解,我认为你想使用Azure SDK for Python公开一个Azure虚拟机的私人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) 

作为参考,您可以参考下面的文件来了解上述代码的细节。

  1. Resource Management Authentication使用Python作为变量credentials
  2. Create the management client变量为network_client
  3. 有关azure.mgmt.network包装的更多详细信息,请参阅http://azure-sdk-for-python.readthedocs.io/en/latest/ref/azure.mgmt.network.html
+2

非常复杂(谢谢微软)获取IP地址的方式,但工作和保存我的一天。 小校正,目前network_client是这样创建的: network_client = NetworkManagementClient( 凭证, subscription_id ) – alexvicegrab

0

对于没有将公共IP分配给虚拟机的人,有一种方法可以在不创建公共IP的情况下获取私有IP。

from azure.mgmt.network import NetworkManagementClient, NetworkManagementClientConfiguration 

subscription_id = '' 
credentials = UserPassCredentials(
    '[email protected]', 
    '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上测试。

相关问题