Ускорение тайм-аута SSH при попытке доступа к недоступному серверу

@loa_in_ имеет большую его часть, но конвейерный вывод find имеет тенденцию быть ошибочным.

find /tmp/foo -maxdepth 1 -mindepth 1 -type d -exec mkdir {}/bar \;
2
28.09.2017, 23:18
3 ответа

Самое простое решение — установить тайм-аут соединения на некоторое разумное время.

ssh -o ConnectTimeout=10 -i $key_path -p 2222 $user@$i "sudo init 0" &> /dev/null

10 секунд должно хватить.

Вы также можете использовать некоторые другие инструменты для автоматизации задач -, например Ansible.

5
27.01.2020, 21:53

Если у вас есть «не отвечающая» зависимость, вы можете просто продолжить работу без exit 1и еще несколько раз повторить попытку соединения ssh:

for i in $host
do
        counter=0
        while [ $counter -ne 3 ]; do
        #       echo "Shutting down Host in $Region with ip addrss $i"
                ssh -o ConnectTimeout=10 -i $key_path -p 2222 $user@$i "sudo init 0" &> /dev/null
                if [ $? -ne  0 ]; then
                   echo "$i is shutdown!"
                   counter=3
                else
                   echo "There is some issue, try again"
                   counter=$(($counter+1))
                fi
        done
done
0
27.01.2020, 21:53

Лучшим вариантом было бы сначала увидеть, что сервер обслуживает ssh, используя NMAP или NC

Nmap:Это очень быстро и надежно, но требует установки nmap. Предпочтительный метод NMAP (ex host ip 127.0.0.1):

nmap 127.0.0.1 -PN -p ssh | grep open

Nc:nc обычно уже установлен, однако в некоторых системах, таких как Mac OS X, команда зависает в недоступных системах.(см. обходной путь)

nc -v -z -w 3 127.0.0.1 22 &> /dev/null && echo "Online" || echo "Offline"

Примечание. :Пользователи MAC столкнутся с проблемой отсутствия тайм-аута NC на момент написания этой публикации 5/2019

0
27.01.2020, 21:53

Теги

Похожие вопросы