用于vmware fusion cli工具的python api。

vmfusion的Python项目详细描述


#vmfusion python

vmfusion python是vmware fusion命令的低级python接口 行工具vmrun和vmware vdiskmanager。它的目标是让人可读(因为 我仍然不知道为什么-k是shrink,-n是rename,-r是convert)和 易于使用。

vmrun命令带有大量的命令行选项。目前,只有 因为我还没有找到实际的用途,所以实现了常见的命令 剩下的案子。如果需要未实现的命令,请打开一个问题 或向我发送请求。

#安装

< Buff行情> $pip安装vmfusion

#概述

##vmrun

vmrun工具可用于控制vm的运行时状态。

注意:与vmrun的行为相反,api将使用 _以及相对vmx路径。

###列表

返回所有正在运行的虚拟机的信息。

用法:vmrun.list()

示例:

< Buff行情>
>>> from vmfusion import vmrun
>>> print vmrun.list()
{
    'count': 3,
    'machines': [
    '/Users/msteinhoff/Documents/Virtual Machines/test1/test1.vmx',
    '/Users/msteinhoff/Documents/Virtual Machines/test1/test2.vmx',
    '/Users/Shared/Virtual Machines/test3/test3.vmx',
    ]
}

注意:这将只返回实际运行的vm,与 来自vmware fusion gui的虚拟机库,它还显示暂停 以及挂起的虚拟机。

###开始

打开虚拟机电源。

用法:

< Buff行情> vmrun.start(vmx)

注意/警告:有一个可选的gui参数可以设置为false 在nogui模式下启动vm

Nogui模式很奇怪。在nogui模式下,vm窗口将不可见,但 已运行时在vmware fusion.app中显示。如果fusion gui是 如果不运行,而您启动或关闭/启动它,vm将转换回 图形用户界面模式。如果关闭vmware fusion.app,vm将被挂起。(AT) 至少这是发生在我系统上的事情。

###停止

关闭虚拟机。

用法:

< Buff行情> vmrun.stop(vmx,soft=true)

soft设置为true(默认值)时,配置的关闭脚本将为 执行并向来宾操作系统发送关闭信号。为了让它起作用, 需要安装vmware工具。否则,虚拟机将被无情地杀死。

###复位

重新启动虚拟机。

用法:

< Buff行情> vmrun.reset(vmx,soft=true)

soft设置为true(默认值)时,配置的关机/开机脚本将 执行并向来宾操作系统发送关闭信号。为此 好的,需要安装vmware工具。否则,vm将被杀死 慈悲. < /P>

###暂停

将虚拟机状态挂起到磁盘。

用法:

< Buff行情> vmrun.suspend(vmx,soft=true)

soft设置为true(默认值)时,配置的挂起脚本将为 在系统挂起之前执行。

###暂停

停止虚拟机的CPU执行。

用法:

< Buff行情> vmrun.pause(vmx)

###取消暂停

继续执行m的cpu操作。

用法:

< Buff行情> vmrun.unpause(vmx)

##vdiskmanager

使用vdiskmanager工具可以管理vmdk磁盘。对于所有方法,vmdk参数总是期望vmdk文件的相对路径。

###创建

使用给定参数创建新的vmdk文件。

用法:

< Buff行情> vdiskmanager.create(vmdk,size,disk_type=none,adapter_type=none)

参数:

  • 大小

    < Buff行情>

    工具可读取的尺寸规格,例如100MB20GB1TB。不 执行验证。

  • 磁盘类型

    < Buff行情>

    要创建的磁盘的可选类型,如下之一:

    • sparse_single:一个可增长的vmdk文件
    • 稀疏分割:许多可增长的vmdk文件,分割成2 GB的片
    • 预分配单文件:一个预分配的vmdk文件
    • 前置放大器lloc_split:许多预先分配的2 GB VMDK文件

    默认为sparse_split

  • 适配器类型

    < Buff行情>

    磁盘适配器的可选类型,如下之一:

    • ide
    • lsilogic
    • 总线逻辑

    默认值为lsilogic

###碎片整理

在vmware级别对vmdk文件进行碎片整理(不要与guest混淆 文件系统重组)。

用法:

< Buff行情> vdiskmanager.defragment(vmdk)

###收缩

这将在vmware级别上执行vmdk的收缩(guest 必须准备好文件系统,以使其正常工作,例如启用zerofill工具 LINUX).< /P>

用法:

< Buff行情> vdiskmanager.shrink(vmdk)

###重命名

这将重命名vmdk文件。适用于容量超过9000 2GB的大型拆分磁盘 切片:

用法:

< Buff行情> vdiskmanager.rename(源vmdk,目标vmdk)

###转换

这将转换给定vmdk文件的磁盘类型。

用法:

< Buff行情> vdiskmanager.convert(vmdk,磁盘类型)

disk_type参数与create()中的参数相同,必须是 以下内容:

  • sparse_single:一个可增长的vmdk文件
  • 稀疏分割:许多可增长的vmdk文件,分割成2 GB的片
  • 预分配单文件:一个预分配的vmdk文件
  • 预分配单元拆分:许多预分配的2 GB VMDK文件

###展开

这将把vmdk扩展到给定的大小。

用法:

< Buff行情> vdiskmanager.convert(vmdk,新大小)

new_size参数必须是工具可读的大小规范,例如。 100MB20GB1TB。不执行验证。

#供应商管理网络

收集有关本地vmware网络的某些信息通常很方便。

默认情况下,vmware创建一个仅限主机的网络和一个nat网络。那些是 由vmnet_hostonlyvmnet_nat表示

要检索vnet名称(例如在vmx配置文件中有用),请使用以下命令:

< Buff行情>
>>> from vmfusion import vmnet_nat
>>> print vmnet_nat.name
vmnet8

两个网络上都有一个DHCP服务器在运行。要访问租约信息, 使用以下选项:

< Buff行情>
>>> from vmfusion import vmnet_nat
>>> print vmnet_nat.leases
{
    '00:50:56:00:23:40': '192.168.128.130'
    '00:50:56:00:19:12': '192.168.128.129'
    '00:50:56:00:46:93': '192.168.128.136'
}

DHCP服务器将租约信息存储在磁盘上的文件中。中的数据 租约字典是只读的,不会自动更新。重新加载 文件中的最新数据,使用reload()方法:

< Buff行情> vmnet_nat.leases.reload()

#自定义工具位置

vmrunvdiskmanager使用/applications/vmware fusion.app中的默认位置。这可以通过实例化自定义的cli对象来更改。

vmrun在自定义位置:

< Buff行情>
>>> from vmfusion import vmrun_cli
>>> vmrun_custom = vmrun_cli( '/Volumes/External/Applications/VMware Fusion.app'  )

vdiskmanager也一样:

< Buff行情>
>>> from vmfusion import vdiskmanager_cli
>>> vdiskmanager_custom = vdiskmanager_cli( '/Volumes/External/Applications/VMware Fusion.app'  )

要创建自定义vmnet,请使用vnet cli < Buff行情>

>>> from vmfusion import vnet_cli
>>> vmnet_custom = vnet_cli( 'vmnet6' )
>>> print vmnet_custom.name
vmnet6

#贡献

叉,代码,拉请求:)

#许可证

参见license.txt

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Eclipse中使用ctrlshiftt而不是ctrlshiftr有什么好处?   java自动装箱概念SCJP   java如何使用JAXR和Resteasy、Angular和Wildfly10处理COR   java如何在整数数组中动态添加元素?   JAVA从继承生成器模式返回父对象继承   java问题调试生产者消费者问题   java MQ:已达到通道的最大实例数   JavaPowerMockMockito:我试图stubb的方法最终被调用   java Hibernate将多个列映射到一个表   在java中,将字符串中的单词大写,但跳过字符串中的数字和多余空格或符号   使用Eclipse将Java项目导出到JAR时出现“重复条目”错误   java使用eclipselink在实体表上指定NullConstraint   <Java>我可以在TCPIP中使用多个服务器socket吗?   带有自定义视图的java AlertDialog:调整大小以包装视图的内容   如何从用C#编写的web服务生成用于java的SOAP API?