Попробуйте передать параметр (s )в свой сценарий, используя одинарные кавычки (' ). Без этого ваша оболочка съест их еще до того, как ваш скрипт увидит параметр.
$./tst '\\abc\def\ghi\jkl\lmn\'
Ваша команда говорит: отправить один пакет(-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