Mein Python-Skript (Python 3.4.3) ruft ein Bash-Skript über subprocess:Python subprocess .check_call vs .check_output
import subprocess as sp
res = sp.check_output("bashscript", shell=True)
Die bashscript enthält die folgende Zeile:
ssh -MNf somehost
die öffnet eine gemeinsame Master-Verbindung zu einem Remote-Host, um einige nachfolgende Operationen zu ermöglichen.
Bei der Ausführung des Python-Skripts wird zur Eingabe des Kennworts für die Zeile ssh
aufgefordert. Nach Eingabe des Kennworts wird die Eingabe jedoch gesperrt, und das Kennwort wird nicht mehr zurückgegeben. Wenn ich Ctrl-C, um das Skript zu beenden, sehe ich, dass die Verbindung ordnungsgemäß hergestellt wurde (so ssh
Zeile wurde erfolgreich ausgeführt).
Ich habe dieses Blockierungsproblem nicht, wenn Sie check_call
anstelle von check_output
verwenden, aber check_call
ruft stdout nicht ab. Ich würde gerne verstehen, was genau das Blockierungsverhalten für check_output
verursacht, wahrscheinlich im Zusammenhang mit etwas Subtilität mit ssh -MNf
.
Große Erklärung. –