Один из способов - запустить ping
- это цикл, например,
while ! ping -c 1 host; do sleep 1; done
(Вы можете перенаправить вывод на /dev/null
, если хотите сохранить его в тайне.)
В некоторых системах, таких как Mac OS X, ping
может также иметь опции -a -o
(согласно другому ответу), которые заставят его продолжать пинговать до получения ответа. Тем не менее, ping
во многих (большинстве?) Системах Linux не имеет опции -o
, а эквивалент -c 1 -w 0
по-прежнему завершается, если сеть возвращает ошибку.
Редактировать: Если хост не отвечает на команду ping или вам необходимо проверить доступность службы на определенном порту, вы можете использовать netcat в режиме нулевого ввода-вывода:
while ! nc -w 5 -z host port; do sleep 1; done
-w 5
указывает 5-секундный тайм-аут для каждой отдельной попытки. Обратите внимание, что с помощью netcat вы можете даже перечислить несколько портов (или диапазонов портов) для сканирования, когда некоторые из них станут доступными.
Редактировать 2: показанные выше циклы продолжают пытаться, пока не будет достигнут хост (или порт). Добавьте команду оповещения после них, например, звуковой сигнал или всплывающее окно.