2016-06-21 7 views
1

私はこのような何かをしようとしています。また、それはとにかく動作しませんでした。彼らは、bash: pvcreate -ff /dev/sdb: command not foundというエラーを返します。これは、引数がpvcreateではなく、pvcreate -ff /dev/sdbというプログラムを探しているためです。私はまた、最初にこれを試してみました:os.systemのプロンプトにどのように応答できますか?</p> <pre><code>from subprocess import Popen p = Popen(["vagrant", "ssh", "vmname", "-c", '"pvcreate -ff /dev/sdb"']) </code></pre> <p>をしかし、それはユーザーの入力が必要です。

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を使用してプロンプトに応答することは可能ですか?

+0

[python linuxでos.system()コマンドを実行したときにPythonでyes/noを返す](http://stackoverflow.com/questions/28662107/give-response-yes-no-in) -python-when-a-command-is-execution-os-system-in-python) – zondo

+0

あなたがどちらの質問も読んでいないように感じます。私は「ポポン」に何が間違っているのですか?このエラーは 'bash:pvcreate -ff/dev/sdb:No such file or directory'です。なぜ私がdownvotedになっているのかわからない、私は質問し、私の質問でそれらを詳細にする前に、多数のソリューションを試してみました。 – rofls

+0

重複としてマークされた質問は私を助けません。私はその方法で 'Popen'を使ってみました。 @ JoachimPileborg – rofls

答えて

3

私は、呼び出しのリスト形式を使用することをお勧めします。

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() 

これは、渡されるパラメータのセットを表し、シェルクォーテーションで混乱する必要がなくなります。

+0

ありがとう、これは私のために働くようです:) – rofls

関連する問題

 関連する問題