Грубый вариант — использовать специальную переменную bash $SECONDS, которая подсчитывает количество секунд с момента запуска оболочки. Я внес три изменения в скрипт:
while
для сравнения $SECONDS с 50 $1
Новый скрипт:
#!/bin/bash
while ! ping -c1 "$1" &>/dev/null; [[ "$SECONDS" -lt 50 ]]
do echo "Ping Fail - `date`"
done
echo "Host Found - `date`"
Я хотел бы только отметить, что утверждение Host Found
может ввести в заблуждение в случае тайм-аута в 50 -секунд. Вы можете сравнить $SECONDS с 50 после цикла, чтобы определить, произошел ли тайм-аут.
Это приблизительная оценка в 50 секунд, так как цикл можно было ввести с $SECONDS == 49, а затем ping
для успешного или неудачного выполнения может потребоваться более одной секунды.