python列出vsphere上所有带ip的虚拟机

问题描述

我正在尝试从我的vSphere Server获取虚拟机名称和IP,目前我只有虚拟机名称。如何获取IP?

#! /usr/bin/env python
from pyVim.connect import SmartConnect,SmartConnectNoSSL,disconnect
from pyvmomi import vim
import json

from pyVim.connect import SmartConnect
from pyvmomi import vim
import ssl

# Get all the Vms from vCenter server inventory and print its name
# Below is Python 2.7.x code,which can be easily converted to python 3.x version

s=ssl.SSLContext(ssl.PROTOCOL_TLSv1)
s.verify_mode=ssl.CERT_NONE
si= SmartConnectNoSSL(host="192.168.1.2",user="titi@gege.com",pwd="my_pass")
content=si.content

# Method that populates objects of type vimtype
def get_all_objs(content,vimtype):
        obj = {}
        container = content.viewManager.CreateContainerView(content.rootFolder,vimtype,True)
        for managed_object_ref in container.view:
                obj.update({managed_object_ref: managed_object_ref.name})
        return obj

#Calling above method
getAllVms=get_all_objs(content,[vim.VirtualMachine])

#Iterating each vm object and printing its name
for vm in getAllVms:
        print (vm.name)

解决方法

每个VM的IP地址信息位于GuestInfo对象中,该对象可以从以下位置获得:vm.guestinfo.ipaddress

注意,返回的IP地址来自VMware Tools,因此请确保已安装并正在运行这些IP地址。