VirtualBox Python API - 远程访问
我想在我的主笔记本电脑(Windows 7系统)上运行一个虚拟机,但我想通过我的小型笔记本(Ubuntu系统)来操作这个虚拟机。
在Ubuntu上,我准备了一个Python脚本:
from vboxapi import VirtualBoxManager
import sys
sys.path.append("/home/myLogin/Downloads/sdk/bindings/webservice/python/lib")
mgr = VirtualBoxManager("WEBSERVICE", {'url':'myIP', 'user':'myServerLogin', 'password':'myPassthere'})
vbox = mgr.vbox
name = "Muszelek"
mach = vbox.findMachine(name)
session = mgr.mgr.getSessionObject(vbox)
progress = mach.launchVMProcess(session, "gui", "")
progress.waitForCompletion(-1)
mgr.closeMachineSession(session)
但是我遇到了一个错误:
Installation problem: check that appropriate libs in place
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/vboxapi/__init__.py", line 981, in __init__
self.vbox = self.platform.getVirtualBox()
File "/usr/local/lib/python2.7/dist-packages/vboxapi/__init__.py", line 856, in getVirtualBox
return self.connect(self.url, self.user, self.password)
File "/usr/local/lib/python2.7/dist-packages/vboxapi/__init__.py", line 910, in connect
self.vbox = self.wsmgr.logon(self.user, self.password)
File "/home/karolinka/Downloads/sdk/bindings/webservice/python/lib/VirtualBox_wrappers.py", line 11790, in logon
req=IWebsessionManager_logonRequestMsg()
NameError: global name 'IWebsessionManager_logonRequestMsg' is not defined
Traceback (most recent call last):
File "vmmach.py", line 5, in <module>
mgr = VirtualBoxManager("WEBSERVICE", {'url':'myIP', 'user':'myComputerLogin', 'password':'myPass'})
File "/usr/local/lib/python2.7/dist-packages/vboxapi/__init__.py", line 985, in __init__
raise ne
NameError: global name 'IWebsessionManager_logonRequestMsg' is not defined
有没有什么办法可以解决这个问题?这个问题是因为我Windows机器上的库出错了吗?
2 个回答
0
看起来找不到这个类!你有没有去找找网络服务的API,看看有没有可用的?我之前也遇到过类似的问题,我在/usr/lib/virtualbox/sdk/bindings这个文件夹里找,结果只找到了xpcom文件夹,没有找到webservice文件夹。所以我就把sdk里的webservice文件夹直接加进来了,结果一切都正常了。
0
我在我的Mac上遇到了完全一样的问题。问题出在VirtualBox_wrappers.py这个文件里,它在一个尝试的代码块中引入了VirtualBox_client.py(这个文件定义了我们要用的全局名称),如果引入失败,它就会继续执行,不会报错。
try:
from VirtualBox_client import *
except:
pass
问题是,VirtualBox_client.py这个文件依赖于ZSI这个库,而我的电脑上没有安装这个库,所以引入失败了。一旦我执行了
easy_install zsi
一切就正常工作了。