Gre*_*ech 4 python shell awk subprocess python-2.7
我需要在subprocess.Popen中的Python中运行shell命令。
命令为:$ virsh dumpxml server1 | grep“源文件” | awk -F \''{print $ 2}'
输出为:/vms/onion.qcow2
我在使用上述命令时遇到两个挑战:
1)该命令在循环内,在看到“ server1”的地方,它是一个具有服务器名称的变量。
2)Python抱怨KeyError:'print $ 2'
这是我到目前为止的内容:
proc = subprocess.Popen(["virsh dumpxml {0} | grep 'source file' | awk -F\' '{print $2}'".format(vm)], stdout=subprocess.PIPE, shell=True)
stdout = proc.communicate()[0]
Run Code Online (Sandbox Code Playgroud)
提前致谢。
虽然可以直接从python使用libvirt,但是您的问题是{格式字符串,并且也包含print $2在awk脚本中,因此您必须转义这些大括号,例如
proc = subprocess.Popen(["virsh dumpxml {0} | grep 'source file' | awk -F\\' '{{print $2}}'".format(vm)], stdout=subprocess.PIPE, shell=True)
stdout = proc.communicate()[0]
Run Code Online (Sandbox Code Playgroud)