包含 Vcenter vm 的 Python 列表



我找到了一个列出所有 Vcenter VM 属性的 Python 脚本,但现在我需要将一些属性注册到 Python 列表(或数组,字典...(中。

但它不起作用。

我的 getVminfos.py :

编辑:正确的文件:

import argparse
import atexit
import itertools
import unicodedata
import pyVmomi
from pyVmomi import vmodl
from pyVmomi import vim
from pyVim.connect import SmartConnect, Disconnect
def GetArgs():
   parser = argparse.ArgumentParser(description='Process args for retrieving all the Virtual Machines')
   parser.add_argument('-s', '--host', required=True, action='store',help='Remote host to connect to')
   parser.add_argument('-o', '--port', type=int, default=443, action='store',help='Port to connect on')
   parser.add_argument('-u', '--user', required=True, action='store',help='User name to use when connecting to host')
   parser.add_argument('-p', '--password', required=False, action='store',help='Password to use when connecting to host')
   args = parser.parse_args()
   return args

def print_vm_info(virtual_machine):
    """
    Print information for a particular virtual machine or recurse into a
    folder with depth protection
    """
    Ansible_Hosts = []
    Ansible_Groups = []
    Ansible_Names = []
    summary = virtual_machine.summary
    print("Name       : ", summary.config.name)
    print("Template   : ", summary.config.template)
    #print("Path       : ", summary.config.vmPathName)
    print"Guest      : ", str(unicodedata.normalize('NFKD', summary.config.guestFullName))
#print("Instance UUID : ", summary.config.instanceUuid)
#print("Bios UUID     : ", summary.config.uuid)
print"State      : ", summary.runtime.powerState
if summary.guest is not None:
    ip_address = summary.guest.ipAddress
    if ip_address:
        Ansible_Hosts.append([ip_address])
        print "Ansible_Hosts[1:15]", Ansible_Hosts[1:15]

def main():
    args = GetArgs()
    try:
        si = SmartConnect(host=args.host,user=args.user,pwd=args.password,port=int(args.port))
        if not si:
            print("Could not connect to the specified host using specified "
             "username and password")
            return -1
        atexit.register(Disconnect, si)
        content = si.RetrieveContent() # get root folder
        container = content.rootFolder  # starting point to look into
        viewType = [vim.VirtualMachine]  # object types to look for
        recursive = True  # whether we should look into it recursively
        containerView = content.viewManager.CreateContainerView(
        container, viewType, recursive)
        children = containerView.view
        for child in children:
            print_vm_info(child)
    except vmodl.MethodFault as error:
        print("Caught vmodl fault : " + error.msg)
        return -1
    return 0
# Start program
if __name__ == "__main__":
    main()

打印就像一个魅力,但我的列表(Ansible_Hosts,...(总是空的......

列表初始化语句 (Ansible_Hosts = [] 等( 应该转到 main((

最新更新