簡體   English   中英

如何使用python從虛擬機讀取文件

[英]How to read files from a virtual machine using python

我正在使用Oracle VirtualBox在系統上運行虛擬機,我要完成的工作是從物理系統讀取虛擬機上的文件。 我正在使用virtualbox api(pyvbox)與VirtualBox進行交互。 這是我第一次使用virtualbox api。

更新

>>> import virtualbox
>>> vbox = virtualbox.VirtualBox()
>>> vm =vbox.find_machine("XPBox")
>>> session = vm.create_session()
>>> gs = session.console.guest.create_session('xphandler' , ' qwerty')
>>> process, stdout, stderr = gs.execute('C:\\Windows\\System32\\cmd.exe', ['/C', 'tasklist'])

Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    process, stdout, stderr = gs.execute('C:\\Windows\\System32\\cmd.exe', ['/C', 'tasklist'])
  File "C:\Python27\lib\site-packages\virtualbox\library_ext\guest_session.py", line 54, in execute
    process.wait_for(int(library.ProcessWaitResult.start), 0)
  File "C:\Python27\lib\site-packages\virtualbox\library.py", line 13666, in wait_for
    reason = ProcessWaitResult(reason)
  File "C:\Python27\lib\site-packages\virtualbox\library.py", line 121, in __init__
    raise ValueError("Can not find enumeration where value=%s" % value)
ValueError: Can not find enumeration where value=None
>>> 

這是我鍵入以下給定解決方案時的輸出。

請仔細閱讀pyvbox文檔。 我相信您可以找到一些解決方案。 doc中給出的以下示例不是您想要的,而是一個很好的啟動參考。

ipython

In [1]: import virtualbox

In [2]: vbox = virtualbox.VirtualBox()

In [3]: vm = vbox.find_machine('test_vm')

In [4]: session = vm.create_session()

In [5]: gs = session.console.guest.create_session('Name', 'password')

In [6]: process, stdout, stderr = gs.execute('C:\\Windows\\System32\\cmd.exe', ['/C', 'tasklist'])

In [7]: print stdout

這是有關如何從來賓VM復制的示例: https : //gist.github.com/mjdorma/9044686

您發布的回溯似乎發生在許多用戶身上。 當IProcess.wait_for返回無時,會發生這種情況。 該庫嘗試枚舉已返回哪種類型的ProcessWaitResult。 當vboxapi嘗試調用IProcess.wait_for COM接口返回None時,就會發生這種情況。

 In [5]: virtualbox.library.IProcess.wait_for?
Type:       instancemethod
String Form:<unbound method IProcess.wait_for>
File:       virtualbox\library.py
Definition: virtualbox.library.IProcess.wait_for(self, wait_for, timeout_ms)
Docstring:
Waits for one or more events to happen.

in wait_for of type int
    Specifies what to wait for;
    see <link to="ProcessWaitForFlag"/> for more information.

in timeout_ms of type int
    Timeout (in ms) to wait for the operation to complete.
    Pass 0 for an infinite timeout.

return reason of type ProcessWaitResult
    The overall wait result;
    see <link to="ProcessWaitResult"/> for more information.

提示:確保在運行pyvbox時正在運行最新的virtualbox版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM