Страница 1 из 2
скрипт проверки соединения с инетом
Добавлено: 2006-10-06 15:36:32
almos
Hi all!
Есть следующая проблема: на сервере отвечающий за соединение с нетом установлено 2 xdsl модема sirius по 115kbps каждый, в режиме multilink т.е. 2 физических канала объединены в один логический (соединение через ppp). Иногда пропадает синхронизация (с ней и инет), причем спонтанно. Я нашел способ переинициализации портов и перезапуска драйвера, но его же надо производить тогда, когда нет пропал. Поэтому надо написать скрипт который бы проверял коннект с нетом, и в случае его отсутствия запускал мой скрипт, это все хозяйство прописать в кроне …
Вот только проблемка, кто-то может подсобить скриптом проверки соединения (я в принципе понимаю как это сделать, но мои познания в области утилит командного интерпритатора недостаточный). Мне нужен только скрипт проверки соединения, если есть коннект, то ниче не делать, если есть запускать shell скрипт…
Заранее благодарен
Добавлено: 2006-10-06 15:44:22
Alex Keda
а как ты узнаёшь что упал?
(на фре)
Если через ifconfig - надо его вывод распарсить и всё..
Re: скрипт проверки соединения с инетом
Добавлено: 2006-10-06 15:44:30
dikens3
almos писал(а):Hi all!
Есть следующая проблема: на сервере отвечающий за соединение с нетом установлено 2 xdsl модема sirius по 115kbps каждый, в режиме multilink т.е. 2 физических канала объединены в один логический (соединение через ppp). Иногда пропадает синхронизация (с ней и инет), причем спонтанно. Я нашел способ переинициализации портов и перезапуска драйвера, но его же надо производить тогда, когда нет пропал. Поэтому надо написать скрипт который бы проверял коннект с нетом, и в случае его отсутствия запускал мой скрипт, это все хозяйство прописать в кроне …
Вот только проблемка, кто-то может подсобить скриптом проверки соединения (я в принципе понимаю как это сделать, но мои познания в области утилит командного интерпритатора недостаточный). Мне нужен только скрипт проверки соединения, если есть коннект, то ниче не делать, если есть запускать shell скрипт…
Заранее благодарен
Код: Выделить всё
#!/usr/local/bin/bash
testip="Какой-нибудь внешний IP, лучше DNS"
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
sleep 60
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
ТУТ ТВОЙ СКРИПТ
exit 0
fi
fi
Добавлено: 2006-10-06 15:45:22
Alex Keda
статейку бы чтоли накалякал про мультилинк...
первый раз про такое слышу..
Добавлено: 2006-10-06 15:50:49
almos
lissyara писал(а):а как ты узнаёшь что упал?
(на фре)
Если через ifconfig - надо его вывод распарсить и всё..
Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
Добавлено: 2006-10-06 15:51:37
Alex Keda
НУ, пример уже привели
))
Добавлено: 2006-10-06 15:52:42
Alex Keda
правда пример некорректный - на bash...
На shell - более независимо от установленного на сервре ПО...
У меня, например bash не стоит. и никогда не будет
)
Добавлено: 2006-10-06 15:53:08
dikens3
almos писал(а):
Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
Мигают, это типа соединение заново устанавливают?
Добавлено: 2006-10-06 15:54:29
dikens3
lissyara писал(а):правда пример некорректный - на bash...
На shell - более независимо от установленного на сервре ПО...
У меня, например bash не стоит. и никогда не будет
)
А это пример, а не призыв к действию.
Я ещё и на pgbash пишу для postgres. Проблем за год пока нет.
СИ я не знаю, вот и приходится.
Добавлено: 2006-10-06 16:01:09
Alex Keda
ага. а вот человеку баш придётся накатывать тока ради этого
))
Добавлено: 2006-10-06 16:14:53
almos
dikens3 писал(а):almos писал(а):
Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
Мигают, это типа соединение заново устанавливают?
Нет. Соединение не восстанавливается.
Модемы не понимают что синхронизация пропала. То же самое с системой.
Все отлично, никаких признаков сбоя, а инета нету. Исправляется перезагрузкой компа или переинициализацией ком портов и перезагрузкой ppp.
Добавлено: 2006-10-06 16:26:29
dikens3
almos писал(а):
Нет. Соединение не восстанавливается.
Модемы не понимают что синхронизация пропала. То же самое с системой.
Все отлично, никаких признаков сбоя, а инета нету. Исправляется перезагрузкой компа или переинициализацией ком портов и перезагрузкой ppp.
У меня подобный прикол есть с PPPoE соединением. ADSL Модем зависает (DLINK), только не полностью. Т.е. через http:// на него можно зайти, посмотреть, но трафик не бегает. после перезапуска модема и PPPoE соединения всё путём. Писал автоматический скрипт, с помощью curl, для захода и перезапуска модема и PPPoE. Работает. Собственно это он и есть, только часть с модемом вырезана.
Добавлено: 2006-10-06 17:21:36
almos
Может кому-то понадобится скрипт переинициализации портов (в multilink режиме):
#!/bin/sh
#убиваем ppp, живучий гад
/usr/bin/killall ppp
/usr/bin/killall ppp
/usr/bin/killall ppp
/bin/sleep 2
/sbin/comcontrol /dev/cuad0 dtrwait 300 drainwait 0
/bin/stty < /dev/cuad0 -clocal crtscts hupcl 9600 reprint ^R
/bin/stty < /dev/cuad0 -clocal -crtscts -hupcl 0
/sbin/comcontrol /dev/cuad1 dtrwait 300 drainwait 0
/bin/stty < /dev/cuad1 -clocal crtscts hupcl 9600 reprint ^R
/bin/stty < /dev/cuad1 -clocal -crtscts -hupcl 0
#запускаем ppp (параметры конфигурации - sirius_mlp) + запускаем с опцией nat
/usr/sbin/ppp -quiet -ddial -nat sirius_mlp
Re: скрипт проверки соединения с инетом
Добавлено: 2006-11-08 21:14:51
proxy-man
dikens3 писал(а):almos писал(а):Hi all!
Есть следующая проблема: на сервере отвечающий за соединение с нетом установлено 2 xdsl модема sirius по 115kbps каждый, в режиме multilink т.е. 2 физических канала объединены в один логический (соединение через ppp). Иногда пропадает синхронизация (с ней и инет), причем спонтанно. Я нашел способ переинициализации портов и перезапуска драйвера, но его же надо производить тогда, когда нет пропал. Поэтому надо написать скрипт который бы проверял коннект с нетом, и в случае его отсутствия запускал мой скрипт, это все хозяйство прописать в кроне …
Вот только проблемка, кто-то может подсобить скриптом проверки соединения (я в принципе понимаю как это сделать, но мои познания в области утилит командного интерпритатора недостаточный). Мне нужен только скрипт проверки соединения, если есть коннект, то ниче не делать, если есть запускать shell скрипт…
Заранее благодарен
Код: Выделить всё
#!/usr/local/bin/bash
testip="Какой-нибудь внешний IP, лучше DNS"
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
sleep 60
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
ТУТ ТВОЙ СКРИПТ
exit 0
fi
fi
Чего-то не работает скрипт...
Добавлено: 2006-11-09 11:27:57
dikens3
Там нечему не работать. :-) Простейшие ПИНГИ :-)
Код: Выделить всё
#!/usr/local/bin/bash
testip="Какой-нибудь внешний IP, лучше DNS"
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
sleep 60
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
then
echo "Выполнение моего скрипта. Убиваю все PPPoE соединения, прибиваю default'овый маршрут и запускаю скрипт соединения с провом заново." | logger -t NOPING
ТУТ ТВОИ КОМАНДЫ
exit 0
fi
fi
Соственно нужен BASH, и немного понимать что хочешь. Я ещё строчку добавил. Попробуй и посмотри что будет в логах.
Добавлено: 2006-11-09 15:10:43
Alex Keda
однако, на шелле писать надо...
Добавлено: 2006-11-13 11:50:27
Artem
lissyara писал(а):однако, на шелле писать надо...
очень интересна данная тема
обращяюсь к lissyara
напишите статейку по данному вопросу.....
теже грабли и у меня (тож укртел) собак
только мне б жилательно тож самого на sh и чтоб в текстовый файлик скидовал когда и в какое время пропал инет..... и в какое время его врубили
воть...
а то говорят у нас постоянно всё работает (типо аля проблемы у Вас)
Добавлено: 2006-11-13 13:16:00
BAV_Lug
Я это на перле делал (он то я думаю у всех стоит
)
Примерно так
Код: Выделить всё
#!/usr/bin/perl
chomp($isi=`/sbin/ping -c 3 "IP адрес (я ставил ДНС прова)"|grep "64 bytes"|wc -l`);
if (not($isi>0)) {
system("date");
printf("Restart Inet\n");
system("/usr/bin/killall ppp");
sleep(5);
system('/usr/sbin/ppp -ddial inet");
затем в крон (раз в пять минут) >> /var/log/restartinet
Вроде все
ЗЫ А на статью это вроде и не тянет
Добавлено: 2006-11-13 13:51:50
Artem
хотелось бы что-бы появилась в мелочах
как маленькая статейка и всё-же на sh
Добавлено: 2006-11-13 14:58:40
BAV_Lug
Artem писал(а):хотелось бы что-бы появилась в мелочах
как маленькая статейка и всё-же на sh
Блин, с перла на sh перевести не проблема
Щас дообедаю и займусь
Добавлено: 2006-11-13 15:44:35
Artem
спасибо огромное
если можно
чтоб если инет праподает то в текстовый файлик записовалось когда пропал
дату и время
и когда появился к примеру
13.11.06 14.50 -----> 13.11.06 15.03
зарание спасибо
Добавлено: 2006-11-13 15:46:24
BAV_Lug
Ну вот для страждущих
Код: Выделить всё
#!/bin/sh
isi=`/sbin/ping -c 3 ip-адрес | grep "64 bytes" | wc -l`
if !(test $isi -gt "0")
then
echo Нет инета `date`
/usr/bin/killall ppp
sleep 5
/usr/sbin/ppp -ddial inet
fi
Примерно так. Ну а дальше уже Ваша фантазия
Добавлено: 2006-11-13 15:53:15
Artem
ну а если чтоб в файлик записывал
сори понимаю что легко (только я в шеллле нехрена не рублю)
если можно так как я привёл на 1 сообщение выше
Добавлено: 2006-11-13 16:33:19
BAV_Lug
Artem писал(а):ну а если чтоб в файлик записывал
сори понимаю что легко (только я в шеллле нехрена не рублю)
если можно так как я привёл на 1 сообщение выше
Так как ты привел выше сложнее (нужно либо парсить логи либо переписывать скрипт так, что-бы из него не было выхода пока не появится инет снова (но при запуске из крона нужно тогда еще делать дополнительную проверку на наличии его копии в пямяти, иначе он может очень сильно размножится (зная какой инет у Укртела
)))
А вот так попроще
Код: Выделить всё
echo Нет инета `date` >> /var/log/restartinet.log
Когда не будет инета будет добавляться строчка в файл restartinet.log
ЗЫ Я вот тут подумал, слишком у многих это проблема, может наваять полный скрипт и накатать статейку?
Добавлено: 2006-11-13 16:51:05
Artem
очень бы хотелось увидеть
просто задрал укртел морозом
типо а у нас всё работает
а так хоть можно будет придаставлять чё то
чтоб они шивилились
очень интересна данная тема