我为virtualbox制作了命令行界面,以便可以从远程计算机控制virtualbox.现在我正在尝试使用python virtualbox api实现命令行界面.为此,我下载了pyvb软件包(python api文档显示了可用于在pyvb软件包下实现此功能的函数).但是当我给pyvb.vb.VB.startVM(VB类的实例,pyvb.vm.vbVM)
服务器端代码为
from pyvb.constants import *
from pyvb.vm import *
from pyvb.vb import *
import xpcom
import pyvb
import os
import socket
import threading
class ClientThread ( threading.Thread ):
# Override Thread's __init__ method to accept the parameters needed:
def __init__ ( self, channel, details ):
self.channel = channel
self.details = details
threading.Thread.__init__ ( self )
def run ( self ):
print 'Received connection:', self.details [ 0 ]
while 1:
s= self.channel.recv ( 1024 )
if(s!='end'):
if(s=='start'):
v=VB()
pyvb.vb.VB.startVM(v,pyvb.vm.vbVM)
else:
self.channel.close()
break
print 'Closed connection:', self.details [ 0 ]
server = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
server.bind ( ( '127.0.0.1', 2897 ) )
server.listen ( 5 )
while True:
channel, details = server.accept()
ClientThread ( channel, details ).start()
它显示一个错误
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.5/threading.py", line 486, in __bootstrap_inner
self.run()
File "news.py", line 27, in run
pyvb.vb.VB.startVM(v,pyvb.vm.vbVM.getUUID(m))
File "/usr/lib/python2.5/site-packages/pyvb-0.0.2-py2.5.egg/pyvb/vb.py", line 65, in startVM
cmd='%s %s'%(VB_COMMAND_STARTVM, vm.getUUID())
AttributeError: 'str' object has no attribute 'getUUID'
解决方法:
您可能需要从Virtualbox检查官方的Python API. pyvb似乎是第三方编写的包装器.
virtualbox sdk包含Python示例和完整的API文档.
标签:api,virtualbox,python
来源: https://codeday.me/bug/20191210/2100346.html