простой скрипт для того, чтобы выполнить перезагрузку на Linux машинеSSH + SSH застрял на удаленной машине
for i in $LIST_OF_LINUX_MACHINES
do
ssh $LINUX_MACHINE /var/tmp/restart.sh
done
после запуска этого сценария пару раз,
несколько раз процесс SSH застрял! (И цикл застрял на текущей машине) -
так как это может быть - что может быть причиной того, что в редких случаях, SSH застрял
и как избежать этого?
Указывает тайм-аут соединения * TCP *. Это не общая сумма времени, чтобы ваша команда была гарантирована до полной стоимости; множество других мест, кроме установления соединения на уровне TCP, могут повредить вещи. –
BTW, BashFAQ # 68 могут представлять интерес: http://mywiki.wooledge.org/BashFAQ/068 –
BTW (также), '$ LIST_OF_LINUX_MACHINES' - это запах кода по нескольким причинам. Одна из этих причин заключается в том, что вы используете его как список, но он * не является * списком, это строка (правильный способ хранения списка элементов - это массив, но итерация по массиву выглядит как 'для хоста в '$ {linux_machines [@]}"; do'). Другим является то, что имена переменных all-caps зарезервированы для переменных со значением для оболочки и операционной системы - см. Соответствующий POSIX spec @ http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html, 4-й абзац, имея в виду, что оболочка и env vars используют пространство имен. –