需要帮助。我正在尝试在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()
在数据变量中没有写:(
答案 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
希望它有所帮助。