LINUX.ORG.RU

script connect check


0

0

У меня инет выделенка.

Собственно придумал такой спопособ проверять коннект. 
dns_providera=xx.xxx.x.x
STAT=`ping -c $dns_providera | grep 'packets' | awk '/ / {print($1)}'`
            if [ "$STAT" > "0" ]; then
              echo Connect work 
else
dhclient eth1
          fi
А вопрос мой такой, или скорее даже просьба. Поделиться своими решениями на проверку состояния работы инета или улучшить (довести до ума) мой скрипт.


Надо сначала в консоль писать, а потом на ЛОР. С [ "$STAT" > "0" ] номер не пройдет. Условие будет ложно, только когда $STAT не определена, а у тебя оно будет или нулем или числом, больше нуля. То есть, "echo Connect work" будет выполняться всегда. И в команде ping после ключа -c должно стоять целое число. Делай так:

dns_providera=xx.xxx.x.x STAT=`ping -c 3 $dns_providera | grep 'packets' | awk '{print $1}'`;

(($STAT)) || dhclient eth1;

anonymous
()
Ответ на: комментарий от anonymous

Так-с... dns_providera=xx.xxx.x.x

STAT=`ping -c 3 $dns_providera | grep -o -e "[[:digit:]]* received" | awk '{print $1}'`;

(($STAT)) || dhclient eth1;

Ибо отправлены пакеты то будут, а вот получены ли, надо проверить.

anonymous
()
Ответ на: комментарий от anonymous

Вот это не вполне верно, кстати. В некоторых имплементациях присутствует полезный ключик `-W' (таймаут), лучше его использовать в дополнение к -c. Т.е.:

ping -c 5 -W 6 $SERVER && echo works || echo fails

anonymous
()
Ответ на: комментарий от c_man

Пожалста, маны тут не рулят, как оказалось, т.к. '-W' наличествует не у всех :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.