Как можно зациклить, пока IP: порт не отвечает - PullRequest
0 голосов
/ 23 января 2019

Наш почтовый сервер перестал слушать 587 с нашего рабочего места.

Мы дважды перезапустили его и теперь смотрим журналы.

Кажется, что мы теряем соединение tcp, я хочу посмотреть, когда это произойдет, чтобы я наконец смог добраться до ошибки.

По этой причине я пытаюсь проверить в цикле, что tcp-соединение открыто до тех пор, пока не произойдет сбой. Как мне этого добиться?

Является ли это надежным:

while nc -z hostname port; do sleep 5; done

Похоже, что он будет проверяться только один раз, когда я запускаю nc -z mail.gmail.com 587 и nc -z mail.gmail.com 588 Я не получаю код ошибки, ожидаемый для каждого случая.

1 Ответ

0 голосов
/ 23 января 2019

Я не уверен, что понимаю, что именно вы спрашиваете, но будем надеяться, что именно это вы и имеете в виду!

Поскольку google.com не работает, я бы порекомендовал отключить ваш интернет для проверки.Используйте свой IP вместо google.com и свой порт вместо 80.

#!/bin/bash
for i in `seq 1 10`;
do
        nc -z -w 1 google.com 80 &> /dev/null
        if [ $? -eq 0 ]; then
            echo OK
        else
            echo FAIL
        fi
done
...