使用os.system和subprocess.Popen

时间:2013-03-20 06:51:41

标签: python shell virtual-machine vmware-workstation

我一直在尝试编写一个python脚本来远程控制我的虚拟机。例如,我想在我的VM上运行程序并检查它是否正在运行。对于这一步,我尝试使用Os.system并且它似乎正在工作但是为了更好地控制我喜欢使用子进程,但不幸的是没有成功。我提供了os.system和subprocess的代码,如下所示:

os.system("vmrun -gu root -gp mohsen77 runProgramInGuest F:\Client\Ubuntu10464bit.vmx usr/bin/tcpreplay --intf1=eth4 /home/srastega/output.pcap")
print('PID is:' + str(os.getpid()))

args = shlex.split("vmrun -gu root -gp mohsen77 runProgramInGuest F:\Client\Ubuntu10464bit.vmx /bin/ls -l")
tcpreplay = subprocess.Popen(args, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True)
out, err = tcpreplay.communicate()
print(out)
print('PID is:' + str(tcpreplay.pid))

对于第二段代码,我收到错误:

  

错误:无法打开VM:F:\ ClientUbuntu10464bit.vmx,虚拟机无法打开   找到了

1 个答案:

答案 0 :(得分:0)

双引号字符串中的反斜杠可能具有特殊含义,这可能会导致它们消失。我不确定为什么这两个调用的工作方式不同,但请尝试将反斜杠加倍或更改为正斜杠。

(取消评论中的讨论答案。)