Bash Expect Te lnet: обработать преждевременное соединение рядом с сервером - PullRequest
2 голосов
/ 29 апреля 2020

вопрос сегодняшнего дня:

Если у меня есть сценарий ожидаемого, который просто автоматизирует некоторые базовые c те lnet операции, но иногда сервер "плохо действует" и закрывается Соединения я могу обработать это и избежать ожидания некоторого тайм-аута?

Некоторые характеристики:
Строка, которую я напечатал на консоли, когда соединение разрывается сервер, это класс c «Соединение закрыто внешним хостом».

Операции, которые должна отправлять автоматическая lnet операция, следующие:

Фаза аутентификации:

  1. ← Ждать приглашения

  2. → Отправить имя пользователя

  3. ← Ждать для пароля

  4. → Отправить пароль

  5. ← Дождаться приглашения

Команда и фаза вывода:

→ Отправить командную строку (обычно что-то очень простое, например, слово «напряжение», «температура»)

← Ожидать весь вывод, как правило, ждать до следующего подскажите сделай работу. (выходные данные содержат много символов и значений переменных, поэтому ожидание приглашения кажется хорошей стратегией.)

Фаза закрытия соединения:

→ Отправьте команду «exit»

← Ожидание le git "Соединение закрыто внешним хостом."

ПРИМЕЧАНИЕ:

«Соединение закрыто внешним хостом». может произойти в любой момент, например, в любой фазе. Подробно, мне интересно понять, возможно ли это исправить, когда я жду приглашения или вывода (шаги 1,3,5,7), ожидающих завершения соединения.

С наилучшими пожеланиями всем и спасибо тем, кто постарается помочь!
Берегите себя,
Лука

1 Ответ

1 голос
/ 29 апреля 2020

После появления вы можете настроить expect_before команду (один раз), которая будет выполняться каждый раз, когда ваш скрипт выполняет expect. Например,

expect_before "Connection closed" { send_user "Unexpected close" ; exit 1 }

См. пример

...