скрипт проверки соединения с инетом
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ефрейтор
- Сообщения: 55
- Зарегистрирован: 2006-03-31 0:24:24
- Контактная информация:
скрипт проверки соединения с инетом
Hi all!
Есть следующая проблема: на сервере отвечающий за соединение с нетом установлено 2 xdsl модема sirius по 115kbps каждый, в режиме multilink т.е. 2 физических канала объединены в один логический (соединение через ppp). Иногда пропадает синхронизация (с ней и инет), причем спонтанно. Я нашел способ переинициализации портов и перезапуска драйвера, но его же надо производить тогда, когда нет пропал. Поэтому надо написать скрипт который бы проверял коннект с нетом, и в случае его отсутствия запускал мой скрипт, это все хозяйство прописать в кроне …
Вот только проблемка, кто-то может подсобить скриптом проверки соединения (я в принципе понимаю как это сделать, но мои познания в области утилит командного интерпритатора недостаточный). Мне нужен только скрипт проверки соединения, если есть коннект, то ниче не делать, если есть запускать shell скрипт…
Заранее благодарен
Есть следующая проблема: на сервере отвечающий за соединение с нетом установлено 2 xdsl модема sirius по 115kbps каждый, в режиме multilink т.е. 2 физических канала объединены в один логический (соединение через ppp). Иногда пропадает синхронизация (с ней и инет), причем спонтанно. Я нашел способ переинициализации портов и перезапуска драйвера, но его же надо производить тогда, когда нет пропал. Поэтому надо написать скрипт который бы проверял коннект с нетом, и в случае его отсутствия запускал мой скрипт, это все хозяйство прописать в кроне …
Вот только проблемка, кто-то может подсобить скриптом проверки соединения (я в принципе понимаю как это сделать, но мои познания в области утилит командного интерпритатора недостаточный). Мне нужен только скрипт проверки соединения, если есть коннект, то ниче не делать, если есть запускать shell скрипт…
Заранее благодарен
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: скрипт проверки соединения с инетом
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
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- ефрейтор
- Сообщения: 55
- Зарегистрирован: 2006-03-31 0:24:24
- Контактная информация:
Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...lissyara писал(а):а как ты узнаёшь что упал?
(на фре)
Если через ifconfig - надо его вывод распарсить и всё..
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Мигают, это типа соединение заново устанавливают?almos писал(а): Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
А это пример, а не призыв к действию.lissyara писал(а):правда пример некорректный - на bash...
На shell - более независимо от установленного на сервре ПО...
У меня, например bash не стоит. и никогда не будет )
Я ещё и на pgbash пишу для postgres. Проблем за год пока нет.
СИ я не знаю, вот и приходится.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- ефрейтор
- Сообщения: 55
- Зарегистрирован: 2006-03-31 0:24:24
- Контактная информация:
Нет. Соединение не восстанавливается.dikens3 писал(а):Мигают, это типа соединение заново устанавливают?almos писал(а): Просто пропадает инет, модемы лампочками мигают, данные не идут, причем в системе фактически соединение присутствует. Эта проблема не у меня одного...
Достал меня это долбанный укртелеком с его глюками.
Модемы через com порты подключаются...
Модемы не понимают что синхронизация пропала. То же самое с системой.
Все отлично, никаких признаков сбоя, а инета нету. Исправляется перезагрузкой компа или переинициализацией ком портов и перезагрузкой ppp.
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
У меня подобный прикол есть с PPPoE соединением. ADSL Модем зависает (DLINK), только не полностью. Т.е. через http:// на него можно зайти, посмотреть, но трафик не бегает. после перезапуска модема и PPPoE соединения всё путём. Писал автоматический скрипт, с помощью curl, для захода и перезапуска модема и PPPoE. Работает. Собственно это он и есть, только часть с модемом вырезана.almos писал(а): Нет. Соединение не восстанавливается.
Модемы не понимают что синхронизация пропала. То же самое с системой.
Все отлично, никаких признаков сбоя, а инета нету. Исправляется перезагрузкой компа или переинициализацией ком портов и перезагрузкой ppp.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- ефрейтор
- Сообщения: 55
- Зарегистрирован: 2006-03-31 0:24:24
- Контактная информация:
Может кому-то понадобится скрипт переинициализации портов (в 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
#!/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
- proxy-man
- лейтенант
- Сообщения: 692
- Зарегистрирован: 2006-04-05 12:06:13
- Откуда: Odessa
- Контактная информация:
Re: скрипт проверки соединения с инетом
Чего-то не работает скрипт...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
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Там нечему не работать. :-) Простейшие ПИНГИ :-)
Соственно нужен BASH, и немного понимать что хочешь. Я ещё строчку добавил. Попробуй и посмотри что будет в логах.
Код: Выделить всё
#!/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
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- рядовой
- Сообщения: 10
- Зарегистрирован: 2006-09-28 16:53:44
- Контактная информация:
очень интересна данная темаlissyara писал(а):однако, на шелле писать надо...
обращяюсь к lissyara
напишите статейку по данному вопросу.....
теже грабли и у меня (тож укртел) собак
только мне б жилательно тож самого на sh и чтоб в текстовый файлик скидовал когда и в какое время пропал инет..... и в какое время его врубили
воть...
а то говорят у нас постоянно всё работает (типо аля проблемы у Вас)
-
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Я это на перле делал (он то я думаю у всех стоит )
Примерно так
затем в крон (раз в пять минут) >> /var/log/restartinet
Вроде все
ЗЫ А на статью это вроде и не тянет
Примерно так
Код: Выделить всё
#!/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");
Вроде все
ЗЫ А на статью это вроде и не тянет
-
- рядовой
- Сообщения: 10
- Зарегистрирован: 2006-09-28 16:53:44
- Контактная информация:
-
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
-
- рядовой
- Сообщения: 10
- Зарегистрирован: 2006-09-28 16:53:44
- Контактная информация:
-
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Ну вот для страждущих
Примерно так. Ну а дальше уже Ваша фантазия
Код: Выделить всё
#!/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
-
- рядовой
- Сообщения: 10
- Зарегистрирован: 2006-09-28 16:53:44
- Контактная информация:
-
- сержант
- Сообщения: 299
- Зарегистрирован: 2006-06-02 15:38:28
- Откуда: Харьков
Так как ты привел выше сложнее (нужно либо парсить логи либо переписывать скрипт так, что-бы из него не было выхода пока не появится инет снова (но при запуске из крона нужно тогда еще делать дополнительную проверку на наличии его копии в пямяти, иначе он может очень сильно размножится (зная какой инет у Укртела )))Artem писал(а):ну а если чтоб в файлик записывал
сори понимаю что легко (только я в шеллле нехрена не рублю)
если можно так как я привёл на 1 сообщение выше
А вот так попроще
Код: Выделить всё
echo Нет инета `date` >> /var/log/restartinet.log
ЗЫ Я вот тут подумал, слишком у многих это проблема, может наваять полный скрипт и накатать статейку?
-
- рядовой
- Сообщения: 10
- Зарегистрирован: 2006-09-28 16:53:44
- Контактная информация: