zoukankan      html  css  js  c++  java
  • Python之虚拟机操作:利用VIX二次开发,实现自己的pyvix(系列一)成果展示和python实例

    在日常工作中,需要使用python脚本去自动化控制VMware虚拟机,现有的pyvix功能较少,而且不适合个人编程习惯,故萌发了开发一个berlin版本pyvix的想法,暂且叫其OpenPyVix。OpenPyVix利用vmware提供的VIX接口,对其重新封装,导出为dll文件,然后利用python的CDLL模块调用其中的方法来实现python自动化控制虚拟机的操作。本系列文章将逐步为你揭开OpenPyVix的神秘面纱,喜欢的猿们支持一下!

    好了,言归正传,今天我带给大家的是可用的dll和python的sample,在随后的文章中,我会step by step的揭开OpenPyVix的面纱:如何创建dll工程,如何生成不依赖于dll(即静态编译方法)的dll文件,python中使用OpenPyVix的类实例;在具体的dll工程的开发过程中,我会带给大家诸如单例模式,以及Windows中实现互斥的方法等。

    需要使用到的python模块有:ctypes中的find_library等。

       1:  libpath = my_find_library('VixLib.dll')
       2:  cwd = os.getcwd()
       3:  os.chdir( os.path.dirname( libpath ) )
       4:  vix = CDLL( libpath )
       5:  os.chdir(cwd)
       6:   
       7:  vmOrdinal = c_int()
       8:  res = vix.openVMX( byref(vmOrdinal), vmxpath, isLinux, 
       9:                          sESXHost, sESXUser, sESXPw )
      10:  vix.powerOn(vmOrdinal)
      11:  ...
      12:  vix.closeHandle(vmOrdinal)

    其中my_find_library方法如下:

       1: def my_find_library(name):
       2:      lib = find_library(name)
       3:      if lib:
       4:          return lib
       5:      
       6:      #find_library sucks on Windows, so we'll fake it
       7:      paths = [ x for x in sys.path ]
       8:      paths.append( os.getcwd() )
       9:      paths.append( module_path )
      10:      
      11:      for path in paths:
      12:          try:
      13:              libpath = os.path.join(path,name)
      14:              if os.path.exists(libpath):
      15:                  return libpath
      16:          except WindowsError:
      17:              continue
      18:              
      19:      return None

    那么,我们的dll中到底有那些方法呢?看图:

    002

    正如博客园所说,代码改变世界,我是一个想通过代码来改变自己人生,改变世界的程序猿!

    感谢大家的阅读,敬请期待本系列之二:Python之虚拟机操作:利用VIX二次开发,实现自己的pyvix(系列二)单例模式和互斥访问

    Published by Windows Live Writer.

  • 相关阅读:
    VisualSVN 服务不能自动启动的问题
    "There is already an open DataReader associated with this Command which must be closed first"错误
    LINQ 中调用存储过程自动绑定列名
    vs2008中调试iis7.0托管的程序
    SQL SERVER 2005的一个怪问题: 在查询结果面板中编辑失败.
    在VS2003下把一个DataTable Update 到数据库
    帮人解决一个小问题:QQ空间登录时脚本错误造成无法登入
    关于Sys未定义错误
    多层母版页嵌套中, 内层母版页的事件默认不触发
    线程同步
  • 原文地址:https://www.cnblogs.com/berlin-sun/p/OpenPyVix.html
Copyright © 2011-2022 走看看