如何使用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中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
python调用java的Webservice示例
Mar 10 Python
python递归计算N!的方法
May 05 Python
python动态网页批量爬取
Feb 14 Python
win与linux系统中python requests 安装
Dec 04 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
在python下读取并展示raw格式的图片实例
Jan 24 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Django保护敏感信息的方法示例
May 09 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
python爬取网页版QQ空间,生成各类图表
Jun 02 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php实用代码片段整理
2016/11/12 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
script标签属性用type还是language
2015/01/21 Javascript
jquery实现拖动效果
2016/08/10 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
通过C++学习Python
2015/01/20 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
单位承诺书格式
2014/05/21 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS