Ich kann keine geeignete Lösung für den folgenden Fall finden. Also, im Grunde möchte ich zwei Shell-Befehle pipen und einige Eingabedaten (mypassword
hier) an die zweite übergeben. Hier einige Code demonstriert das Problem:Pass Eingang zu Popen Prozess
import subprocess
import shlex
args1 = shlex.split("find /home/vasya/rmps/ -name *.rpm")
ps = subprocess.Popen(args1, stdout=subprocess.PIPE)
args2 = shlex.split("xargs rpmsign --addsign")
p2 = subprocess.Popen(args2, stdin=ps.stdout, stdout=subprocess.PIPE)
ps.stdout.close()
output = p2.communicate('mypassword\n')[0]
print(output)
Wenn er gestartet wird es in der Konsole fragt: Enter pass phrase:
und hält trotz der Tatsache, dass ich die Passphrase bin vorbei bereits (mein mypassword
Eingang).
Wo ist meine Schuld und wie repariere ich sie?