Почему `ping -c 1 -W 1800 somehost` не выполняется успешно, когда появляется хост?

Попробуйте передать параметр (s )в свой сценарий, используя одинарные кавычки (' ). Без этого ваша оболочка съест их еще до того, как ваш скрипт увидит параметр.

$./tst '\\abc\def\ghi\jkl\lmn\'
0
28.01.2020, 01:27
1 ответ

Ваша команда говорит: отправить один пакет(-c 1)и ждать ответа(-W 1800)до 30 минут.

Поскольку хост предположительно отключен в момент отправки одного пакета, маловероятно, что он сможет отправить ответ, поэтому pingждет, пока не наступит крайний срок, и возвращает сообщение об ошибке.

К сожалению, нет простого способа «pingдо успеха», поэтому вам придется синтезировать его с помощью цикла. Этот ждет до 1800 секунд, отправляя один пинг каждые пять секунд.

end=$(($(date +%s) + 1800))
while [[ $(date +%s) -lt $end ]]
do
    ping -c 1 -i 5 -w 30 -q myhost && break
done
4
28.01.2020, 02:21

Теги

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