如何使用python操作vmware


Posted in Python onJuly 27, 2019
import pysphere
from pysphere import VIServer
 
host_ip = "200.200.173.45"
username = "administrator@vsphere.local"
passwd = "admin123."
server_obj = VIServer()
 
server_obj.connect(host=host_ip,user=username,password=passwd)
# 可以连接esxi主机,也可以连接vcenter
 
# 获取连接的对象类型
print server_obj.get_server_type()
 
 
# 获取esxi的版本信息
print server_obj.get_api_version()
 
 
 
# 获取vcenter下的虚拟机的列表,可以带很多的参数,具体看方法的帮助
vm_list = server_obj.get_registered_vms()
 
 
# 关闭连接
server_obj.disconnect()
 
# 获取虚拟机的状态信息
 
# 通过路径获取vm的实例
vm1 = server_obj.get_vm_by_path()
# 通过名称获取vm的实例
vm1 = server_obj.get_vm_by_name()
 
# 下面就可以获取vm的具体信息
print vm1.get_status()
 
# 返回的状态信息会更快
print vm1.get_status(basic_status=True)
 
 
# 判断虚拟机状态的方法
# print vm1.is_powered_off()
# print vm1.is_powered_on()
# 。。。。。。。。
 
 
# 获取vm的详细信息,他是一个dict
print vm1.get_properties()
 
 
# 获取虚拟机的资源池的名称
print vm1.get_resource_pool_name()
 
 
# 操作虚拟机
vm1.power_off()
vm1.power_on()
vm1.suspend()
 
 
# 让命令在后台运行,也就是异步执行
 
vm1.power_on(sync_run=False)

克隆操作

import pysphere
from pysphere import VIServer
 
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 
host_ip = "200.200.173.45"
username = "administrator@vsphere.local"
passwd = "Admin123."
server_obj = VIServer()
 
 
 
server_obj.connect(host=host_ip, user=username, password=passwd)
clone_vm = server_obj.get_vm_by_name("esx6.5")
# new_vm = clone_vm.clone("new_clone_name")
 
print dir(pysphere)

登陆guest

import pysphere
from pysphere import VIServer
 
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 
host_ip = "200.200.173.45"
username = "administrator@vsphere.local"
passwd = "Admin123."
server_obj = VIServer()
 
 
 
server_obj.connect(host=host_ip, user=username, password=passwd)
clone_vm = server_obj.get_vm_by_name("测试虚拟机")
 
 
# 内部做电源操作,需要虚拟机必须要安装vmtools
# 1、需要登录guest
clone_vm.login_in_guest("administrator","admin123.")
 
clone_vm.shutdown_guest()
clone_vm.reboot_guest()
clone_vm.standby_guest()
#挂起虚拟机
 
# 2、对虚拟机内部的文件和文件夹进行操作
 
# 创建目录
clone_vm.make_directory(path=r"c:\tool\test",create_parents=True)
 
# r的意思是read的意思
# create_parents参数的意思是如果指定path的父目录不存在,是否要创建父目录、
 
 
# 移动目录,如果目的端有相同的目录,则会报错
clone_vm.move_directory(r"c:\tool\test",r"d:\tool\test_bak")
 
# 删除目录
clone_vm.delete_directory()
# recursive,如果是true的,会把子目录和文件都会被删除,如果是false,如果有子目录,或者目录下有文件,删除会报错的
 
 
 
# 列出所有的文件
clone_vm.list_files()
 
# 下载文件
clone_vm.get_file()
 
# 上传文件
clone_vm.send_file()
 
# 移动文件
clone_vm.move_file()
 
# 删除文件
clone_vm.delete_file()
 
# ---------------------------------------------------------------------------------------
# 通过pysphere对操作的系统的进程做操作
clone_vm.start_process()
# 该命令返回的结果就是这个进程的id
# program_path,
# args=None 参数
# cwd=None 程序的工作目录
 
clone_vm.get_environment_variables()
# 获取系统所有的环境变量
 
clone_vm.terminate_process()
# 干掉指定的进程id
 
clone_vm.list_processes()
# 列出虚拟机内部的所有的进程

快照操作

import pysphere
from pysphere import VIServer
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 
host_ip = "200.200.173.45"
username = "administrator@vsphere.local"
passwd = "Admin123."
server_obj = VIServer()
 
server_obj.connect(host=host_ip, user=username, password=passwd)
# 可以连接esxi主机,也可以连接vcenter
 
# 获取连接的对象类型
print server_obj.get_server_type()
 
# 获取esxi的版本信息
print server_obj.get_api_version()
 
 
vm1 = server_obj.get_vm_by_name()
 
# 回滚快照
 
# 回到当前状态的上一个快照的状态
vm1.revert_to_snapshot()
 
#回到某个快照的的状态,
vm1.revert_to_named_snapshot()
 
 
# 创建快照
vm1.create_snapshot("name", sync_run=True, description=None,memory=True, quiesce=True)
# memory=False 就是不做内存快照
# quiesce=True 只对开机状态安装了vmtools的vm生效,让vmtools去冻结vm的内部的文件,提高快照的准确性
 
 
 
# 删除快照
# 删除当前的快照
vm1.delete_current_snapshot()
 
# 删除指定名称的快照
vm1.delete_named_snapshot()
 
#删除指定路径的快照
vm1.delete_snapshot_by_path()
 
 
# 查看某个虚拟机的快照信息
snap_list = vm1.get_snapshots()
 
 
#还有很多的快照的命令
for i in snap_list:
  print i,i.get_name()

迁移操作

import pysphere
from pysphere import VIServer
 
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
 
host_ip = "200.200.173.45"
username = "administrator@vsphere.local"
passwd = "Admin123."
server_obj = VIServer()
 
 
 
server_obj.connect(host=host_ip, user=username, password=passwd)
clone_vm = server_obj.get_vm_by_name("测试虚拟机")
 
clone_vm.migrate()
 
 
# 只迁移主机
# clone_vm.migrate()
# migrate有个参数叫做host,这个host不是esxi的ip地址,这个值是pysphere自己定义的一个值,需要用下面的方法获取
 
# a = server_obj.get_hosts()
# print a
# {'host-184': '200.200.173.41', 'host-1282': '200.200.173.43', 'host-14': '200.200.173.42'}
 
# 这个host-184、host-1282才是这里的host的值
 
 
# resource_pool的值也pysphere定义的,通过下面的方法获取
# b = server_obj.get_resource_pools()
# print b
 
# {'resgroup-1262': '/Resources/cyr', 'resgroup-24': '/Resources', 'resgroup-1261': '/Resources/tc'}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python通过解析网页实现看报程序的方法
Aug 04 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
详解Django中的form库的使用
Jul 18 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 Python
python使用建议与技巧分享(二)
Aug 17 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
python单例模式的应用场景实例讲解
Feb 24 Python
Python一行代码实现自动发邮件功能
May 30 Python
Python制作表白爱心合集
Jan 22 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 #Python
Djang的model创建的字段和参数详解
Jul 27 #Python
python中bs4.BeautifulSoup的基本用法
Jul 27 #Python
Django的Modelforms用法简介
Jul 27 #Python
在django admin中添加自定义视图的例子
Jul 26 #Python
深入了解Django中间件及其方法
Jul 26 #Python
如何在Django项目中引入静态文件
Jul 26 #Python
You might like
第五章 php数组操作
2011/12/30 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
python实现在字符串中查找子字符串的方法
2015/07/11 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
python实现粒子群算法
2020/10/15 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
《天游峰的扫路人》教学反思
2014/04/25 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
销售人才自我评价范文
2014/09/27 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书