virtualbox sdk get stdout

时间:2017-02-12 16:40:37

标签: python sdk virtualbox virtualhost

需要帮助。我正在尝试在python 2.7上使用Virtualbox SDK 5.1,而且我不知道在vm guest OS中执行命令后如何获取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()

在数据变量中没有写:(

1 个答案:

答案 0 :(得分: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

希望它有所帮助。