2017-02-12 5 views
0

Нужна помощь. Я пытаюсь использовать Virtualbox SDK 5.1 на python 2.7, и я не знаю, как получить stdout после выполнения команды в vm guest os. Это мой код: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 Попробуйте адаптировать код, приведенный ниже, я использую:.

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 

Надеюсь, это поможет.

Смежные вопросы