简体   繁体   English

我如何通过python SDK从azure中的VM的公共IP地址获取实例ID /名称

[英]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.

相关问题 如何使用Azure SDK获得VM Public IP? - How to get vm public ip with azure sdk? 创建VM之前如何获取Azure SDK Python的公共地址 - How to get an public address for Azure SDK Python, before VM creation 如何从python API azure sdk获取azure scale set实例的公共IP? - how to get public IP of azure scale set instance from python API azure sdk? 如何获得我的Azure VM的公共IP? - How do I get a public IP for my Azure VM? Azure SDK:如何获取软件在运行时正在运行的当前计算机的公共IP地址? - Azure SDK: How do I get the public IP address of the current machine my software is running on at runtime? Azure SDK中是否有python类来保留实例的公共IP地址? - Is there a python class in Azure SDK to reserve Public IP address of an instance? How to Retrieve Public IP Address and Private IP Address of an Azure VM with Azure Java SDK - How to Retrieve Public IP Address and Private IP Address of an Azure VM with Azure Java SDK Azure 如何在 azure golang sdk 中获取虚拟机的 IP 地址 - Azure How to get IP Address for a VM in azure golang sdk 如何通过Powershell获取新创建的Azure VM的IP地址 - How to get the IP address of the newly created Azure VM via Powershell 通过浏览器门户将实例IP地址分配给Azure VM - Assign instance IP address to Azure VM via browser Portal
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM