Как можно отменить попытку SSH, если установление соединения занимает более N секунд?

Как можно отменить попытку SSH, если установление соединения занимает более N секунд?

У меня есть скрипт развертывания, который использует SSH для подключения к нескольким хостам. Иногда хост будет находиться под такой серьезной нагрузкой, что попытка ssh зависнет. Это в конечном итоге приведет к тайм-ауту развертывания, но только после очень длительного периода времени.

В идеале я бы хотел, чтобы скрипт завершался сбоем быстрее, чем по истечении 20-минутного тайм-аута.

Есть ли способ определить, что SSH-соединение не было установлено в течение определенного периода времени, чтобы затем можно было отменить попытку более контролируемым образом?

решение1

Придется рассмотреть возможность установки тайм-аута соединения следующим ConnectTimeoutобразом:

-o ConnectTimeout=1200

Как страница руководства дляssh_configварианты заявлены:

Указывает тайм-аут (в секундах), используемый при подключении к серверу SSH, вместо использования системного тайм-аута TCP по умолчанию. Это значение используется только тогда, когда цель отключена или действительно недоступна, а не тогда, когда она отклоняет соединение.

Таким образом, в использовании это будет выглядеть примерно так:

ssh -o ConnectTimeout=1200 [email protected]

FWIW, ConnectTimeoutзначение, как и многое в скриптах, подобных этому, задается в секундах. Так что 1200 секунд равняется 20 минутам

Связанный контент