Использование python3 .6.8:
Я пытаюсь создать сценарий начальной конфигурации сетевых устройств при загрузке. Мой скрипт открывает lnet соединение на "ip_addr: порт". После подключения скрипт стимулирует сетевое устройство, к которому он подключается, с помощью «\ n \ n» (имитирующего два входа «Enter» от администратора).
connection = asyncio.open_connection(
ip_addr,
port,
)
try:
reader, writer = await asyncio.wait_for(connection, 5)
print(f"successfully connected to {ip_addr}:{port}")
writer.write(b'\n\n\n')
Некоторые устройства уже настроены, и я, кроме «login»: msgstr "отображаться в буфере чтения при вводе '\ n'. Однако, если устройство еще не настроено, «login:» не будет отображаться в буфере. Поэтому я подумал, что мог бы использовать wait_for и параметр timeout, чтобы отменить это и перейти к другому reader.readuntil (...) , ожидающему другой вывод.
try:
await asyncio.wait_for(reader.readuntil(b' login: '), 3)
print(f"{ip_addr}:{port} alredy booted")
break
except (asyncio.TimeoutError, OSError):
print('Nope, moving forward')
await reader.readuntil(b'normal setup ?(yes/no)[n]: ')
Однако это вызывает Ошибка выполнения. Читая документацию, я исключил задачу, которая должна быть отменена, если истекло время ожидания, так почему у него не может быть другой сопрограммы readuntil () ?