2016-05-17 65 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上測試。