我该如何响应OS.System中的提示



我正在尝试做这样的事情:

from subprocess import Popen
p = Popen(["vagrant", "ssh", "vmname", "-c", '"pvcreate -ff /dev/sdb"'])

,但需要用户输入。另外,那还是不起作用。他们给出错误:bash: pvcreate -ff /dev/sdb: command not found,因为它正在寻找程序pvcreate -ff /dev/sdb,而不是带有参数的pvcreate。我还尝试了一下:

p = Popen(["vagrant", "ssh", "vmname", "-c", "pvcreate", "-ff", "/dev/sdb"])

并诉诸于使用:

os.system("vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")

但是,当它提示我时,我需要说是。我也已经尝试了这些选项:

os.system("yes | vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")
os.system("echo y | vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")

是否可以使用os.system

响应提示

我建议使用调用的列表形式。

import subprocess
command = ["vagrant", "ssh", "vmname", "-c", "pvcreate -ff /db/sdb"]
output,error  = subprocess.Popen(
                command, universal_newlines=True,
                stdout=subprocess.PIPE,  
                stderr=subprocess.PIPE).communicate()

这代表将要传递的一组参数,并消除了需要用shell引用的参数。

最新更新