Скрипт проверки и восстановления канала через PPP
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Скрипт проверки и восстановления канала через PPP
Имеется FreeBSD 8.2 и резервный канал через USB модем Novatel U760.
Задача: контроллировать PPP-соединение. Если упало что - восстановить.
Написал скрипт.
Работает под 8.2, под 8.0, 8.1 тоже должно работать (нужно проверять).
Если кому нужно, или есть желание потестировать, поучаствовать в допиливании\шлифовании - буду рад.
https://hi.dp.ua/svn/sh_check_net/
Это библиотеки ф-ций, расположить в /etc/libs
https://hi.dp.ua/svn/sh_libfunc/
Логин: tat , пароль: 123
Задача: контроллировать PPP-соединение. Если упало что - восстановить.
Написал скрипт.
Работает под 8.2, под 8.0, 8.1 тоже должно работать (нужно проверять).
Если кому нужно, или есть желание потестировать, поучаствовать в допиливании\шлифовании - буду рад.
https://hi.dp.ua/svn/sh_check_net/
Это библиотеки ф-ций, расположить в /etc/libs
https://hi.dp.ua/svn/sh_libfunc/
Логин: tat , пароль: 123
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
Услуги хостинговой компании 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/
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Модем может быть любой, версия FreeBSD любая, однако с 8.х есть возможность программно передернуть USB модем, если подвис.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Пример конфигурационного файла check_ppp.conf.sampl
Запускаемый скрипт check_dial_ppp.sh
Код: Выделить всё
#
# check_ppp.conf
#
# пример конфигурационного файла для check_dial_ppp.sh
#
# полный путь к файлу ppp.conf
FILE_PPP_CONF="/etc/ppp/ppp.conf"
# имя секции дозвона PPP (по файлу /etc/ppp/ppp.conf)
namedial="peoplenet"
# название USB модема для версий FreeBSD более 8 (определить командой usbconfig)
# если не указано, наличие модема не проверяется
modem_name="Novatel Wireless CDMA Novatel Wireless Inc."
# дополнительное действие для получения необходимого файла-устройства
ADDITIONAL_ACT="camcontrol eject cd0"
# модуль, необходимый для опознания модема
# если не указано, модуль не проверяется
modules="u3g"
#
execdial="ppp"
# режим запуска PPP
modedial="-ddial"
# имя сетевого интерфейса
interface_name="tun0"
# лог файл
logfile="/var/log/check_ppp.log"
# код возврата, если действий не производилось
cNoAct="255"
# перечень номеров таблиц маршрутизации (см. команду setfib)
setfib_list="1 2 3 4"
# перечень хостов для пингования
ping_list="ex.ua lenta.ru sdk"
# порог определения наличия канала в процентах
# например если в ping_list указано 3 хоста
# - все пингуются потери - 0% - канал отличный
# - из них 1 не пингуется - 33% "плохости" канала
# - ни один не пигуется - потери 100% канала нет
ping_vol_need="35"
Код: Выделить всё
# допустимые параметры запуска
# check [state|start] (default: state)
# linkup [state|start|stop|restart] (default: state)
# online [state|online] (default: state)
# без параметров = check state
# stop = linkup stop
# start = linkup start
# alive = online online
# check проверить(и\или подготовить) наличие достаточных условий для работы PPP
# check [state] (или без параметров) - только проверка
# check start - проверка и по возможности устранение проблем
# linkup контроль работы PPP: процесса PPP, сетевого интерфейса PPP(interface_name)
# linkup [state] - определяется запущен процесс\сетевой интерфейс PPP(interface_name)
# linkup start (или просто start) - запускается PPP процесс, если не запущен,
# если запущен, проверяется наличие достаточных условий для работы PPP
# linkup stop (или просто stop) - прервать выполнения PPP
# linkup restart - перезапуск PPP или просто запуск(если PPP не был запущен)
# online контроль работы PPP: процесса PPP, сетевого интерфейса PPP(interface_name),
# пингование своего IP, своего шлюза и списка хостов(ping_list)
# online [state] - определяется запущен процесс\сетевой интерфейс PPP(interface_name), пингование
# online online (или просто alive) - определяется запущен процесс\сетевой интерфейс PPP(interface_name),
# пингование,
# если PPP не запущен - запустить,
# если "канал хуже" заданного порога(ping_vol_need) - перезапустить PPP
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Итак:
1.Настроить PPP, так чтобы при поднятии его руками работало.
2.Настроить check_ppp.conf
3.Запускать кроном скрипт check_dial_ppp.sh с параметром alive, скажем, раз в 5 минут.
Теперь, по идее, канал должен быть всегда "жив".
Осталось, правда, несколько непоняток:
- если одновременно PPP соединений несколько: как жестко привязаться к имени сетевого интерфейса (tun0 например);
- проверить не используется необходимое устройство (/dev/cuaU0.0 например) кем-то и кем.
1.Настроить PPP, так чтобы при поднятии его руками работало.
2.Настроить check_ppp.conf
3.Запускать кроном скрипт check_dial_ppp.sh с параметром alive, скажем, раз в 5 минут.
Теперь, по идее, канал должен быть всегда "жив".
Осталось, правда, несколько непоняток:
- если одновременно PPP соединений несколько: как жестко привязаться к имени сетевого интерфейса (tun0 например);
- проверить не используется необходимое устройство (/dev/cuaU0.0 например) кем-то и кем.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Готова новая версия скрипта.
Отвязался от жесткой привязки к сетевому интерфейсу.
Осталось придумать как реализовать проверку на использование устройства (/dev/cuaU0.0 например) кем-то и кем.
Приглашаю добровольцев-комсомольцев потестить на разных версиях Фри и на разных модемах.
Отвязался от жесткой привязки к сетевому интерфейсу.
Осталось придумать как реализовать проверку на использование устройства (/dev/cuaU0.0 например) кем-то и кем.
Приглашаю добровольцев-комсомольцев потестить на разных версиях Фри и на разных модемах.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Протестировал на
FreeBSD 8.2,
модемах:
Novatel U760
Huawei EC168
Sierra Wireless Compass 597
Полет нормальный.
FreeBSD 8.2,
модемах:
Novatel U760
Huawei EC168
Sierra Wireless Compass 597
Полет нормальный.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
У меня Novatel U720, проблема актуальная для меня. Сейчас пока использую такой скрипт:
Я читал, что на FreeBSD 8.2 есть проблемы с USB: типа программно погасить можно, а потом включить нельзя.
Код: Выделить всё
/usr/bin/killall -9 ppp ; /sbin/ifconfig tun0 destroy ; /usr/sbin/usbconfig -d ugen0.2 power_off ; /bin/sleep 40 ; /usr/sbin/usbconfig -d ugen0.2 power_on ; /etc/rc.d/ppp start
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
2 skeletor
В 8.2 включение USB-устройства усложнили(не знаю зачем), но возможность есть:
Где 0.1 - это корневой юсб-концентратор, на котором висит интересующий нас порт.
В принципе, можно было обойтись и, но при этом прерывается выполненеие всех процессов, в названии которых встречается "ppp", ну и такой вариант совсем не подходит при одновременном использовании нескольких PPP-сессий.
Скрипт рабочий(не так много тестированный, правда
), можно брать использовать.
Следующий шаг - контроль траффика(канал тарифицируется по траффику) съем статистики, учет за период, получение балланса на счету.
Ну и супер игра - прием\отсылка СМСок
В 8.2 включение USB-устройства усложнили(не знаю зачем), но возможность есть:
Код: Выделить всё
usbconfig -d 0.1 set_config 255
usbconfig -d 0.1 set_config 0
В принципе, можно было обойтись и
Код: Выделить всё
killall -9 ppp
Скрипт рабочий(не так много тестированный, правда

Следующий шаг - контроль траффика(канал тарифицируется по траффику) съем статистики, учет за период, получение балланса на счету.
Ну и супер игра - прием\отсылка СМСок

Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
А где вы нашли эти опции set_config ? В мане нету. Видимо ман собрали с версии 8.0
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Что-то у меня не хочет работать
8.1 Пробую пока делать всё вручную, отключаю, подключаю, потом запускаю ppp.

- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Ссори, всё заработало. Просто вместо root-huba я передёргивал порт модема 

-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
2 skeletor
я наступил на теже грабли
Просьба потестить скрипт из первого поста
Особенно на 8.1, если есть.
На 8.1 тоже работает set_config ??

Просьба потестить скрипт из первого поста

Особенно на 8.1, если есть.
На 8.1 тоже работает set_config ??
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Я исходил из того, чтобы передернуть ЮСБ
в 8.0,8.1 -
в 8.2 -
в 8.0,8.1 -
Код: Выделить всё
usbconfig -d a.d power_off; usbconfig -d a.d power_on
Код: Выделить всё
usbconfig -d a.d power_off; usbconfig -d a.1 set_config 255; usbconfig -d a.1 set_config 0
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Вручную работает вот так:kpp писал(а):2 skeletor
На 8.1 тоже работает set_config ??
Код: Выделить всё
usbconfig -d 0.1 set_config 255
usbconfig -d 0.1 set_config 0
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
2 skeletor
И какой эффект, если не делать перед этим power_off ?
И какой эффект, если не делать перед этим power_off ?

Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Никакого, а что должно быть?
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Если перед этим сделать
Устройство должно включиться
Код: Выделить всё
power_off
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Чуть позже попробую протестировать скрипт.
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Дошли руки до тестирования. Можно краткую инструкцию по настройке
?

- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Код: Выделить всё
#/scripts/check_ppp/check_dial_ppp.sh alive
setfib: 1: invalid FIB (max 0)
setfib: 2: invalid FIB (max 0)
setfib: 3: invalid FIB (max 0)
setfib: 4: invalid FIB (max 0)
20110505_141721 State: Module u3g no load.
20110505_141721 Check ready(state) PPP(itc):Fatal ERROR(10)!
20110505_141721 Check ready(state) PPP(itc):Fatal ERROR(10)(device "/dev/cuaU0.0", modem "Novatel Wireless CDMA Novatel Wireless Inc.[0.2(0.1)]ON")!
20110505_141721 WPD:(state)[tun0:26752] WARN_DEV(10!)
Process ID="26752" success killed.
kldload: can't load u3g: File exists
20110505_141721 Load module u3g...ERROR(1)!
20110505_141721 Check ready(start) PPP(itc):Fatal ERROR(11)!
20110505_141721 Check ready(start) PPP(itc):Fatal ERROR(10)(device "/dev/cuaU0.0", modem "Novatel Wireless CDMA Novatel Wireless Inc.[0.2(0.1)]ON")!
20110505_141721 PPPSS:DialUP "itc" start...ERROR(10) Device not ready!
setfib: 1: invalid FIB (max 0)
setfib: 2: invalid FIB (max 0)
setfib: 3: invalid FIB (max 0)
setfib: 4: invalid FIB (max 0)
20110505_141721 ONLINE ERR 0 80
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт проверки и восстановления канала через PPP
Изменил в конфиге строки:
вроде бы пока работает. Буду наблюдать. FreeBSD 8.1 i386
Код: Выделить всё
ADDITIONAL_ACT=""
modules=""
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Скрипт проверки и восстановления канала через PPP
Все можно, просто я сечас в отпуске, типа, могу не сразу ответить 

Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.