script python của tôi (python 3.4.3) gọi một kịch bản bash qua tiến trình con:Python subprocess .check_call vs .check_output
import subprocess as sp
res = sp.check_output("bashscript", shell=True)
Các bashscript chứa các dòng sau:
ssh -MNf somehost
mà mở một kết nối chính được chia sẻ với một số máy chủ từ xa để cho phép một số hoạt động tiếp theo.
Khi thực thi tập lệnh python, nó sẽ nhắc nhập mật khẩu cho dòng ssh
nhưng sau đó nó chặn sau khi nhập mật khẩu và không bao giờ trả về. Khi tôi ctrl-C để chấm dứt tập lệnh, tôi thấy rằng kết nối đã được thiết lập đúng cách (vì vậy dòng ssh
đã được thực thi thành công).
Tôi không gặp sự cố chặn này khi sử dụng check_call
thay vì check_output
, nhưng check_call
không truy xuất giá trị xuất chuẩn. Tôi muốn hiểu chính xác những gì đang gây ra hành vi chặn cho check_output
, có thể liên quan đến một số sự tinh tế với ssh -MNf
.
Giải thích tuyệt vời. –