如何使用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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
Python多层装饰器用法实例分析
Feb 09 Python
pandas Dataframe行列读取的实例
Jun 08 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
Windows下Sqlmap环境安装教程详解
Aug 04 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
星际争霸中的热键
2020/03/04 星际争霸
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
php 404错误页面实现代码
2009/06/22 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
python安装Scrapy图文教程
2017/08/14 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python 两种方法删除空文件夹
2020/09/29 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
方正Java笔试题
2014/07/03 面试题
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书