
Ich habe ein Bereitstellungsskript, das SSH verwendet, um eine Verbindung zu einer Reihe von Hosts herzustellen. Gelegentlich ist ein Host so stark ausgelastet, dass der SSH-Versuch hängen bleibt. Dies führt schließlich zu einem Timeout bei der Bereitstellung, aber erst nach einem sehr langen Zeitraum.
Im Idealfall soll das Skript schneller als nach dem 20-minütigen Timeout fehlschlagen.
Gibt es eine Möglichkeit, nach einer bestimmten Zeit festzustellen, dass die SSH-Verbindung nicht hergestellt werden konnte, sodass ich den Versuch dann kontrollierter abbrechen könnte?
Antwort1
Ich habe mir überlegt, wie man ein Verbindungstimeout wie folgt einstellt ConnectTimeout
:
-o ConnectTimeout=1200
Als Manpage fürssh_config
Optionenzustände:
Gibt das Timeout (in Sekunden) an, das beim Herstellen einer Verbindung mit dem SSH-Server verwendet wird, anstatt das standardmäßige TCP-Timeout des Systems zu verwenden. Dieser Wert wird nur verwendet, wenn das Ziel ausgefallen oder wirklich nicht erreichbar ist, nicht, wenn es die Verbindung ablehnt.
In der Anwendung würde es also ungefähr so aussehen:
ssh -o ConnectTimeout=1200 [email protected]
Der ConnectTimeout
Wert wird – wie viele Dinge in Skripten wie diesem – in Sekunden angegeben. 1200 Sekunden entsprechen also 20 Minuten.