pexpect.spawn は、呼び出し元の Python スクリプトに戻るのに時間がかかりますか?
pexpect を使用してコマンドを挿入し、Karaf コンテナーを管理するスクリプトを作成しています。Karaf が実行されていない場合isalive()
、スクリプトに一時停止を挿入しない限り、常に確実に使用できるとは限らないことに気付きました。
例えば:-
# open a Karaf SSH session
karaf_session = pexpect.spawn("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p " +
karaf_port + " " +
karaf_id + "@" +
karaf_host)
log_file = open(log_file_name, "wb")
karaf_session.logfile_read = log_file
time.sleep(1)
if karaf_session.isalive():
print("Connected to Karaf")
else:
print("Failed to connect to Karaf")
コメントアウトするとtime.sleep(1)
、isalive()
Karaf が実行されていなくても true が返されます。
がスリープの前か後かに応じて、logfile_read
何もキャッチしないか、次のいずれかをキャッチします。
ssh: connect to host localhost port 8101: Connection refused
恣意的なスリープよりも信頼性の高いものが欲しいです。