如何使用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自动化测试之setUp与tearDown实例
Sep 28 Python
Python实现的批量下载RFC文档
Mar 10 Python
解读Python编程中的命名空间与作用域
Oct 16 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
python得到单词模式的示例
Oct 15 Python
Django如何防止定时任务并发浅析
May 14 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
使用Python发现隐藏的wifi
Mar 04 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
django中websocket的具体使用
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
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
2014/03/03 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python批量发送post请求的实现代码
2018/05/05 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
new修饰符是起什么作用
2015/06/28 面试题
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
高中地理教学反思
2016/02/19 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Java 定时任务技术趋势简介
2022/05/04 Java/Android