#_*_ 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("""
\t\t==========================================================
\t\t虚拟机安装的系统信息 : %s
\t\t==========================================================""" % os_info) print("""
==============
虚拟机基础信息
==============
主机名: %s\t\t虚拟机名: %s\t\t虚拟机ID: %s
IP地址: %s\t\tMAC地址: %s\t\t虚拟网络: %s
==============
虚拟机硬件配置
==============
CPU数: %s\t内存: %s\t硬盘: %s\tCDROM: %s\t网卡: %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)

  

Vmware 控制脚本的更多相关文章

  1. SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...

  2. Unity 3D 一个简单的角色控制脚本

    之所以写这个脚本,是因为我想起了我还是新手的时候,那时为了一个角色控制脚本百度了半天还是一无所获,因为看不懂啊,都写的太高级了 希望这个脚本能够帮助那些 像曾经的我一样迷失于代码中的新手们能够清晰的理 ...

  3. Unity3D第三人称摄像机控制脚本

    好久没有敲Blog该.感谢您的留言.注意.私人信件和其他支持,但我似乎没有办法继续自己曾经写了一篇博客系列,因为我在网上找到有关unity3D太少的内容,U3D相关的文章!.. 第三人称视角 第三人称 ...

  4. 《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    一些控制脚本的方式:向脚本发送信号.修改脚本优先级,在脚本运行时切换到运行模式 16.1 处理信号 linux利用信号与运行在系统中的进程进行通信. 也可以通过对脚本进行编程,使其在收到特定信号时执行 ...

  5. Hadoop中的控制脚本

    1.提出问题 在上篇博文中,提到了为什么要配置ssh免密码登录,说是Hadoop控制脚本依赖SSH来执行针对整个集群的操作,那么Hadoop中控制脚本都是什么东西呢?具体是如何通过SSH来针对整个集群 ...

  6. Shell编程—控制脚本

    1处理信号 1.1信号表 编号 信号名称 缺省操作 解释 1 SIGHUP Terminate 挂起控制终端或进程 2 SIGINT Terminate 来自键盘的中断 3 SIGQUIT Dump ...

  7. Unity3D Player角色移动控制脚本

    1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position.之前写过类似的文章,这次增加了平时常用API的脚本,每个脚本均手打测试可用. 2. ...

  8. Linux&shell之如何控制脚本

    写在前面:案例.常用.归类.解释说明.(By Jim) Ctrl+C组合键可以生产SIGINT信号Ctrl+Z组合键生产SIGTSTP信号,停止进程后程序仍然留在内存中,能够从停止的地方继续运行. 捕 ...

  9. Linux控制脚本:信号捕捉,作业控制,调整谦让度,以及计划任务

    1.关于信号以及信号捕捉 (1) $ ps  -au可以用来查看所有作业,包括暂停的和停止的,当然还有正在运行的. 在STAT这一列表示各个作业的状态,S表示Stop,R表示Run,T表示被追踪的或停 ...

随机推荐

  1. Gulp压缩前端CS,JS,图片文件

    Gulp 基于Node.js的前端构建工具,Gulp有许多插件(这里是插件),使用Gulp可以实现前端代码的编译(sass.less).压缩.图片的压缩等,当然主要是前端工程化,不过我目前只是需要压缩 ...

  2. JS中AOP的实现和运用

    在编写js的时候,我们有时会遇到针对某种场景做处理,比如在方法开始的时候校验参数,执行方法前检查权限,或是删除前给出确认提示等等.这些校验方法.权限检测.确认提示,规则可能都是相同的,在每个方法前去调 ...

  3. mybatis源码-解析配置文件(四-1)之配置文件Mapper解析(cache)

    目录 1. 简介 2. 解析 3 StrictMap 3.1 区别HashMap:键必须为String 3.2 区别HashMap:多了成员变量 name 3.3 区别HashMap:key 的处理多 ...

  4. TCP 握手和挥手图解(有限状态机)

    1.引言 TCP 这段看过好几遍,老是记不住,没办法找工作涉及到网络编程这块,各种问 TCP .今天好好整理一下握手和挥手过程.献给跟我一样忙碌,找工作的童鞋,欢迎大神批评指正. 2.TCP 的连接建 ...

  5. PHP之位运算符

    使用场景: 1) 判断奇数偶数 ; $i < ; $i++) { ){ echo $i.PHP_EOL; } } //输出所有奇数 2)快速修改状态 $status1 = ; $status2 ...

  6. vue单页面模板说明文档(3)

    Environment Variables Sometimes it is practical to have different config values according to the env ...

  7. vue组件star开发基于vue-cli

    <template> <div class="stars"> <div v-for="(item,ind) in num" :ke ...

  8. Velocity中为什么要使用{}来明确标识变量

    原因 比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这 个变量的后面紧接着显示name字符,则上面的标签 ...

  9. js判断数组是否包含某个字符串变量的实例

    最近碰到一个这样的现象,后台返回的数据中,数组里面有一些有变量值,有一些没有变量值. 举个例子,比如后台返回的例子是这样的: var arr=[ { "status":" ...

  10. postgreSQL使用杂谈

    由于当时是在美国安装的postgreSQL ,导致回到上海后使用时,发现时间数据显示不正确. To acomplish the timezone change in Postgres 9.6 you ...