По моему скромному мнению, мы, которых системные администраторы склонны фокусировать на этой проблеме назад, запускающийся в бэкэнде, потому что это - наша сфера влияния. Самый эффективный материал действительно во фронтэнде. Если можно получить кэш браузера (http заголовки) и http кэш (cdn, заголовки снова) право части, можно сделать удивительно неаккуратные вещи в источнике и быть в порядке.
вы можете ожидать тайм-аут, некоторые версии требуют -timeout точно так же, как -regex для проверки вызова тайм-аута.
вы ожидаете, что оператор может стать
expect {
")?" { send "yes\r" ; exp_continue }
word: { send $PASS\r}
timeout { puts "failed to SSH" }
}
Я знаю, что это не совсем то, о чем вы спрашивали, но я хотел бы предложить альтернативу. Используйте ssh-ключи вместо паролей и сценарии bash вместо Expect:
output=$(ssh -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no $IP_ADDRESS "hostname")
if [ $? -eq 255 ]; then
# Some error occured while attempting to connect.
else
# Success!
fi
Это явно не говорит о том, что был тайм-аут или не удалось войти в систему с закрытым ключом и т. Д., Но лучше, чем писать Expect.