Требуется ли pexpect.spawn время для вызова сценария Python?Python pexpect - spawn занимает время, чтобы установить
Я пишу сценарий для управления контейнером Karaf, используя команду pexpect для ввода команд. Если 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 не работает.
В зависимости от того, logfile_read
до или после сна, он либо не ловит ничего или следующее: -
ssh: connect to host localhost port 8101: Connection refused
Я предпочел бы иметь что-то более надежное, чем произвольный сон!
Спасибо - что имеет смысл. Основная проблема заключалась в том, что мне нужна явная инструкция catch ('except pexpect.EOF') как часть моей проверки пароля. У меня был только общий 'кроме pexpect, как e'. –