簡體   English   中英

如何響應os.system中的提示?

[英]How can I respond to a prompt in 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 with arguments。 我先試過這個:

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引用的麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM