如何使用python操作vmware

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'}

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

(0)

相关推荐

  • 使用WingPro 7 设置Python路径的方法

    Python使用称为Python Path的搜索路径来查找使用import语句导入代码的模块.大多数代码只会汇入已经默认路径上的模块,通过安装到Python的Python标准库的例子模块或模块点子,pipenv,畅达,或一些其他的包管理器.但是,在某些情况下,代码将依赖于通过在启动Python之前设置环境变量PYTHONPATH提供的不同路径,或者 在导入模块之前在运行时修改sys.path. 软件地址:https://www.macdown.com/mac/3816.html 如果通过其中一种

  • python mysql断开重连的实现方法

    后台服务在运行时发现一个问题,运行约15分钟后,接口请求报错 pymysql.err.InterfaceError: (0, '') 这个错误提示一般发生在将None赋给多个值,定位问题时发现 pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query') 如何解决这个问题呢 出现问题的代码 class MysqlConnection(object): """ mysql

  • python函数的万能参数传参详解

    我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数 def test(*args,**kwargs): print(args,kwargs) 然后定义两个变量 l = [1,2,3,4] d = {"a":1,"b":2} 下面我们分别看下两种传参的方式有什么不同 第一种方式 test(l,d) 如果是使用上面的方式传参,那么l,d这2个变量都会传递给args这个形参,作为args变量的两个元素,kwargs是一个空的字典,没有任何参数传递一个

  • python使用百度文字识别功能方法详解

    介绍python使用百度智能去的文字识别功能,可以识别截图中的文,登陆路验证码等等., 登陆百度智能云,选择产品服务. 选择"人工智能"---文字识别. 点击创建应用. 如图下面有关于"文字识别"的各类信息,如通用文字识别每天可以名费使用50000次,文字识别高精度版本免费使用500次每天.对于一般应用应该还足够. 在创建应用界面填入必要的信息,点击"立即创建"按纽.返回后点击"管理应用"按纽. 管理应用界面主要是能看到调用接

  • Python 画出来六维图

    来自维基百科 我们的大脑通常最多能感知三维空间,超过三维就很难想象了.尽管是三维,理解起来也很费劲,所以大多数情况下都使用二维平面. 不过,我们仍然可以绘制出多维空间,今天就来用 Python 的 plotly 库绘制下三维到六维的图,看看长什么样. 数据我们使用一份来自 UCI 的真实汽车数据集,该数据集包括 205 个样本和 26 个特征,从中选择 6 个特征来绘制图形: 基础工作 安装好 plotly 包: pip install plotly 加载数据集(文末会提供): import p

  • 对python3中的RE(正则表达式)-详细总结

    1.引入正则模块(Regular Expression) 要使用python3中的RE则必须引入 re模块 import re #引入正则表达式 2.主要使用的方法 match(), 从左到右进行匹配 #pattern 为要校验的规则 #str 为要进行校验的字符串 result = re.match(pattern, str) #如果result不为None,则group方法则对result进行数据提取 3. 正则表达式 1️⃣单字符匹配规则 字符 功能 . 匹配任意1个字符(除了\n) []

  • 如何使用python操作vmware

    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) # 可

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • 跟老齐学Python之使用Python操作数据库(1)

    在上一讲中已经连接了数据库.就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立"表",什么是数据库的表呢?下面摘抄字维基百科对数据库表的简要解释,要想详细了解,需要看官在找一些有关数据库的教程和书籍来看看. 在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系.它由纵向的列和横向的行组成,例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个

  • Python操作MySQL数据库9个实用实例

    在Windows平台上安装mysql模块用于Python开发 用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-python-1.2.3.win-amd64-py2.7.exe 实例 1.取得 MYSQL 的版本 # -*- coding: UTF-8 -*- #安装 MYSQL DB for python import MySQLdb as mdb con

  • Windows下安装Redis及使用Python操作Redis的方法

    首先说一下在Windows下安装Redis,安装包可以在https://github.com/MSOpenTech/redis/releases中找到,可以下载msi安装文件,也可以下载zip的压缩文件. 下载zip文件之后解压,解压后是这些文件: 里面这个Windows Service Documentation.docx是一个文档,里面有安装指导和使用方法. 也可以直接下载msi安装文件,直接安装,安装之后的安装目录中也是这些文件,可以对redis进行相关的配置. 安装完成之后可以对redi

  • Python操作SQLite数据库的方法详解

    本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

  • python操作gmail实例

    本文实例讲述了python操作gmail的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: import imaplib, re   class pygmail(object):     def __init__(self):         self.IMAP_SERVER='imap.gmail.com'         self.IMAP_PORT=993         self.M = None         self.response = None      

  • 使用Python操作excel文件的实例代码

    使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 wb = Workbook() # 打开一个工作簿 wb = load_workbook('test.xlsx') # 保存工作簿到文件 wb.save('save.xlsx') •工作表操作 # 获得当前的工作表对象 ws = wb.active # 通过工作表名称得到工作表对象 ws = wb.

  • Python使用MySQLdb for Python操作数据库教程

    本文详细讲述了Python使用MySQLdb for Python操作数据库的方法,分享给大家供大家参考.具体如下: 一般来说网站就是要和数据库进行交互,否则什么都不用做了.今天我们就来分析一个叫MySQLdb的库,使用这个用来和MySQL数据库进行交互. 大家可以从这里获得这个库: http://sourceforge.net/projects/mysql-python 如果你不确定你的python环境里有没有这个库,那就打开python shell,输入 import MySQLdb,如果返

  • Python 操作MySQL详解及实例

    Python 操作MySQL详解及实例 使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3. PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3. SQLA

随机推荐