У меня есть скрипт Python на моем хост-компьютере, который пытается запустить другой скрипт на гостевой машине. Я также хочу, чтобы скрипт на хосте скармливал скрипт гостю с номером.
На хост-машине:
args = shlex.split("vmrun -gu root -gp mohsen77 runProgramInGuest F:/Attacker/Ubuntu1110.vmx /usr/bin/python /home/srastega/Attacker")
Attacker = subprocess.Popen(args, stdin=PIPE, stderr=STDOUT, stdout=PIPE)
out, err = Attacker.communicate("1\n")
exitcode = Attacker.returncode
На гостевой машине:
n= int(raw_input("Value for n:"))
t = open('/home/srastega/test', 'a')
t.write("%s"%str(n))
К сожалению, гостевая программа завершилась с ненулевым кодом выхода: 1 (ошибка, наблюдаемая на хост-компьютере). Но если я попробую эти два сценария на одной машине, связь будет работать правильно, и первый сценарий передаст номер «1» второму сценарию, который запишет это число в файл.
Любая идея, как взаимодействовать между хостом и гостевой машиной? Спасибо, Самане
vmrun
не передает stdin подпроцессу; вместо этого вы пытаетесь использовать временный файл или сокеты. - person jfs   schedule 26.03.2013