• Vmware 控制脚本


    #_*_ coding:utf8 _*_
    import sys,time
    import yaml
    import re
    import os
    import ssl
    import random
    import ConfigParser
    from unittest import TestCase
    
    from pysphere import VIServer, VIProperty, MORTypes, VIException, FaultTypes, 
                         VMPowerState, ToolsStatus
    
    
    class VmDP:
        def __init__(self, host, user, password, **kwargs):
            self.host = host
            self.user = user
            self.pwd = password
    
            self.server = VIServer()
            self.server.connect(self.host, self.user, self.pwd)
            self.kwargs = kwargs
    
        #虚拟机的资源信息显示
        def vm_info(self):
            all_hosts = self.server.get_hosts()         # 查看物理机
            datacenter = self.server.get_datacenters()  # 查看数据中心
            cluster = self.server.get_clusters()        # 查看集群
            store = self.server.get_datastores()        # 查看存储
            resource = self.server.get_resource_pools() # 资源池信息
            vm_name = self.server.get_registered_vms()  # 所有虚拟机
            vm_power_on = self.server.get_registered_vms(status='poweredOn')  # 所有已上电的虚拟机
            vm_power_off = self.server.get_registered_vms(status='poweredOff')  # 所有未上电的虚拟机
    
            print("----物理主机信息----")
            for k, v in all_hosts.items():
                print("[主机名ID]:%s -- [IP地址]:%s" % (k, v))
    
            print("----数据中心信息----")
            for k, v in datacenter.items():
                print("[数据中心ID]:%s -- [数据中心名字]:%s" % (k, v))
    
            print("----存储信息----")
            for k, v in store.items():
                print("[存储ID]:%s -- [存储名字]:%s" %(k,v))
    
            print("----集群信息----")
            for k, v in cluster.items():
                print("[集群ID]:%s -- [集群名字]:%s" %(k,v))
    
            print("----资源池信息----(分组信息)")
            for k, v in resource.items():
                print("[资源池ID]:%s -- [资源路径]:%s" %(k,v))
    
        def install_vm_info(self, vm_name):
            if vm_name is None:
                print("没有参数vm_name.请输入参数:install_vm_info(vm_name)")
                exit(1)
            tmp = filter(self.server, vm_name)
            vm = self.server.get_vm_by_path(tmp)
            os_info = vm.get_properties()['guest_full_name']
            guest_id = vm.get_properties()['guest_id']
            cpu_nu = vm.get_properties()['num_cpu']
            disk_capacity = str(vm.get_properties()['disks'][0]['capacity'] / 1024 / 1024) + "g"
            device_cd = vm.get_properties()['devices'][16000]["label"]
            device_network = vm.get_properties()['devices'][4000]["label"]
            mem_nu = str(vm.get_properties()['memory_mb'] / 1024) + "g"
            vm_ip = vm.get_properties()['ip_address']
            vm_mac = vm.get_properties()['net'][0]['mac_address']
            vnc_network = vm.get_properties()['net'][0]['network']
            print("""
                    		==========================================================
                    		虚拟机安装的系统信息 : %s
                    		==========================================================""" % os_info)
    
            print("""
                    ==============
                    虚拟机基础信息
                    ==============
                         主机名: %s		虚拟机名: %s		虚拟机ID: %s 
                         IP地址: %s		MAC地址: %s		虚拟网络: %s     
                    ==============   
                    虚拟机硬件配置
                    ==============
                         CPU数: %s	内存: %s	硬盘: %s	CDROM: %s	网卡: %s""" % (host_name, vm_in_name, guest_id, 
                        vm_ip, vm_mac, vnc_network, cpu_nu, mem_nu, disk_capacity, device_cd, device_network))
    
        # 过滤出虚拟机的 存储和虚拟机名
        def filter(obj, v):
            hosts = obj.get_registered_vms()
            if v is not None:
                for host in hosts:
                    res = re.findall(r'[S*] ' + v + '/' + v + '.vmx', host)
                    # res = re.findall(r''+'[w*] '+ v + '/w*.vmx',host)
                    if res:
                        return res[0]
    
        def vm_dis(self):
            if self.server.is_connected():
                self.server.disconnect()
    
        def network_info(self):
            return os.system("/usr/bin/ezmomi list  --type Network")
    
        def vm_all_host(self):
            return os.system("/usr/bin/ezmomi list  --type VirtualMachine")
    
        def clone_template(self, kwargs):
            k = kwargs
            print k
    	os.system("ezmomi clone --template %s --hostname %s --cpus %s --mem %s --ips %s" 
            % (k['template'], k['hostname'], k['cpu'] ,k['mem'], k['new_vm_ip']))
    	return True
    
    if __name__ == "__main__":
        # 关闭ssl证书验证
        ssl._create_default_https_context = ssl._create_unverified_context
    
        config_name = 'config.yaml'
        config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), config_name)
        config = yaml.load(file(config_file))
        v = VmDP(config['vmware']['host'], config['vmware']['user'], config['vmware']['pwd'])
        v.vm_info()
        clone_conf = {'template': 'template-test', 
    		  'hostname': 'test_zhang', 
    		  'cpu': '4', 
    		  'mem': '4', 
                      'new_vm_ip': '10.101.255.208'}
        v.clone_template(clone_conf)
    

      

  • 相关阅读:
    【JMeter_14】JMeter逻辑控制器__交替控制器<Interleave Controller>
    【JMeter_13】JMeter逻辑控制器__执行时间控制器<Runtime Controller>
    【JMeter_12】JMeter逻辑控制器__包括控制器<Include Controller>
    【JMeter_11】JMeter逻辑控制器__Switch控制器<Switch Controller>
    【JMeter_10】JMeter逻辑控制器__ForEach控制器<ForEach Controller>
    【JMeter_09】JMeter逻辑控制器__临界部分控制器<Critical Section Controller>
    【JMeter_08】JMeter逻辑控制器__While控制器<While Controller>
    【JMeter_07】JMeter逻辑控制器__循环控制器<Loop Controller>
    【JMeter_06】JMeter逻辑控制器__If控制器<If Controller>
    【JMeter_05】创建第一个简单的接口脚本
  • 原文地址:https://www.cnblogs.com/kuku0223/p/9046888.html
Copyright © 2020-2023  润新知