2017-02-12 34 views
0

需要幫助。我試圖在Python 2.7上使用Virtualbox SDK 5.1,並且我不知道如何在vm guest os中執行命令後獲取stdout。這是我的代碼:virtualbox sdk get stdout

BASIC_SNAPSHOT = 'clear' 
TARGET_NAME = 'ubuntu-server-1404' 

vbm = VirtualBoxManager() 
vbox = vbm.vbox 
mach = vbox.findMachine(TARGET_NAME) 

session = vbm.getSessionObject(vbox) 

def run_test(): 
    mach.lockMachine(session, 1) 

    guest = session.console.guest 
    #gs = session.console.guest.createSession('t4ks', 'Qwerty123', '', '') 
    gs = guest.createSession('t4ks', 'Qwerty123', '', '') 
    gs.waitFor(1, 3000) 
    args = ["-l", "-a"] 
    gp = gs.processCreate('/bin/ls', args, None, (5,), 30) 
    gp.waitFor(1, 3000) 

    pid = gp.PID 
    #print gp.PID 
    data = gp.read(1, 2000, 100) 
    print data 
    session.unlockMachine() 

在數據變量沒有寫:(

回答

0

我也得到VM執行CMD後stdout的嘗試和適應我使用下面的代碼:

import subprocess  
def parse_stdout(): 
     checkCommand = [getVBoxManage(), "guestproperty", "enumerate", computer, "--pattern", "*/IP"] 
     # ignore the above cmd :) 
     print checkCommand 
     parsable_stdout = subprocess.Popen(checkCommand, stdout = subprocess.PIPE).communicate()[0] 
     return parsable_stdout 

希望它有幫助。