繁体   English   中英

使用os.system和subprocess.Popen

[英]Using os.system and subprocess.Popen

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

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,找不到虚拟机

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

(从评论的讨论中得到答案。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM