Мой python script (python 3.4.3) вызывает bash script через подпроцесс:
import subprocess as sp
res = sp.check_output("bashscript", shell=True)
bashscript содержит следующую строку:
ssh -MNf somehost
который открывает общее мастер-соединение с некоторым удаленным хостом, чтобы разрешить некоторые последующие операции.
При выполнении python script он запрашивает пароль для строки ssh
, но затем блокируется после ввода пароля и никогда не возвращается. Когда я ctrl-C завершает script, я вижу, что соединение было правильно установлено (поэтому строка ssh
была успешно выполнена).
У меня нет этой проблемы с блокировкой при использовании check_call
вместо check_output
, но check_call
не извлекает stdout. Я хотел бы понять, что именно вызывает поведение блокировки для check_output
, вероятно, связано с некоторой тонкостью с ssh -MNf
.