如何使用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 Django(图文)
Nov 04 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Django框架模板介绍
Jan 15 Python
Python enumerate函数功能与用法示例
Mar 01 Python
python实现图片九宫格分割
Mar 07 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
python 深度学习中的4种激活函数
Sep 18 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 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使用curl访问https示例分享
2014/01/17 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python中map()函数的使用方法示例
2017/09/29 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
python基于Selenium的web自动化框架
2019/07/14 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python输入错误后删除的方法
2019/10/12 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
民主生活会发言材料
2014/10/20 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
Python使用MapReduce进行简单的销售统计
2022/04/22 Python