[英]How do I get instance id/name from public ip address of VM in azure via python sdk
def get_instance_id_from_pip(self, pip):
subscription_id="69ff3a41-a66a-4d31-8c7d-9a1ef44595c3"
compute_client = ComputeManagementClient(self.credentials, subscription_id)
network_client = NetworkManagementClient(self.credentials, subscription_id)
print("Get all public IP")
for public_ip in network_client.public_ip_addresses.list_all():
if public_ip.ip_address == pip:
print(public_ip)
# Get id
pip_id= public_ip.id.split('/')
print("pip id : {}".format(pip_id))
rg_from_pip = pip_id[4].lower()
print("RG : {}".format(rg_from_pip))
pip_name = pip_id[-1]
print("pip name : {}".format(pip_name))
for vm in compute_client.virtual_machines.list_all():
vm_id = vm.id.split('/')
#print("vm ref id: {}".format(vm_id))
rg_from_vm = vm_id[4].lower()
if rg_from_pip == rg_from_vm:
## this is the VM in the same rg as pip
for ni_reference in vm.network_profile.network_interfaces:
ni_reference = ni_reference.id.split('/')
ni_name = ni_reference[8]
print("ni reference: {}".format(ni_reference))
net_interface = network_client.network_interfaces.get(rg_from_pip, ni_name)
print("net interface ref {}".format(net_interface))
public_ip_reference = net_interface.ip_configurations[0].public_ip_address
if public_ip_reference:
public_ip_reference = public_ip_reference.id.split('/')
ip_group = public_ip_reference[4]
ip_name = public_ip_reference[8]
print("IP group {}, IP name {}".format(ip_group, ip_name))
if ip_name == pip_name:
print("Thank god. Finallly !!!!")
print("VM ID :-> {}".format(vm.id))
return vm.id
I have above code to get the VM instance ID from Public ip but its not working. 我有上面的代码从Public ip获取VM实例ID,但无法正常工作。 What is real surprising is that for all instances, I am getting x.public_ip_address.ip_address as None value. 真正令人惊讶的是,对于所有实例,我都将x.public_ip_address.ip_address设置为None值。
I had multiple readthedocs references for python SDK of Azure. 我有多个适用于Azure的python SDK的readthedocs参考。 but, some how all links not working. 但是,所有链接都无法正常工作。 Good job Azure :) 做得好Azure :)
Some of them: https://azure-sdk-for-python.readthedocs.io/en/v1.0.3/resourcemanagementcomputenetwork.html https://azure-storage.readthedocs.io/en/latest/ref/azure.storage.file.fileservice.html 其中一些: https : //azure-sdk-for-python.readthedocs.io/en/v1.0.3/resourcemanagementcomputenetwork.html https://azure-storage.readthedocs.io/en/latest/ref/azure.storage .file.fileservice.html
Second edit: I got the answer to this and above code will return vm id given the public ip address. 第二次编辑:我得到了答案,上面的代码将在给定公共IP地址的情况下返回vm id。 Though, you can see it is not absolutely optimized answer. 虽然,您可以看到它不是绝对优化的答案。 Hence, better answers are welcome. 因此,欢迎提供更好的答案。 Thanks! 谢谢!
Docs have moved here: https://docs.microsoft.com/python/azure/ 文档已移至此处: https : //docs.microsoft.com/python/azure/
We made some redirection, but unfortunately it's not possible to go global redirection on RTD, so some pages are 404 :/ 我们进行了一些重定向,但是很遗憾,无法在RTD上进行全局重定向,因此某些页面为404:/
About your trouble, I would try to use the publicip operation group directly: https://docs.microsoft.com/en-us/python/api/azure.mgmt.network.v2017_11_01.operations.publicipaddressesoperations?view=azure-python 关于您的麻烦,我将尝试直接使用publicip操作组: https ://docs.microsoft.com/zh-cn/python/api/azure.mgmt.network.v2017_11_01.operations.publicipaddressesoperations?view = azure-python
You get this one in the Network client, as client.public_ip_addresses 您可以在网络客户端中以client.public_ip_addresses的身份获得此证书
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.