
У меня есть скрипт развертывания, который использует SSH для подключения к нескольким хостам. Иногда хост будет находиться под такой серьезной нагрузкой, что попытка ssh зависнет. Это в конечном итоге приведет к тайм-ауту развертывания, но только после очень длительного периода времени.
В идеале я бы хотел, чтобы скрипт завершался сбоем быстрее, чем по истечении 20-минутного тайм-аута.
Есть ли способ определить, что SSH-соединение не было установлено в течение определенного периода времени, чтобы затем можно было отменить попытку более контролируемым образом?
решение1
Придется рассмотреть возможность установки тайм-аута соединения следующим ConnectTimeout
образом:
-o ConnectTimeout=1200
Как страница руководства дляssh_config
варианты заявлены:
Указывает тайм-аут (в секундах), используемый при подключении к серверу SSH, вместо использования системного тайм-аута TCP по умолчанию. Это значение используется только тогда, когда цель отключена или действительно недоступна, а не тогда, когда она отклоняет соединение.
Таким образом, в использовании это будет выглядеть примерно так:
ssh -o ConnectTimeout=1200 [email protected]
FWIW, ConnectTimeout
значение, как и многое в скриптах, подобных этому, задается в секундах. Так что 1200 секунд равняется 20 минутам