xT 25.02.2009 12:20
How-to`s — Простой скрипт мониторинга связи и рестарта ADSL-модема
Несколько дней назад писал сей текст на Хабр в Песочницу, но дальше дело не пошло; расстроился не сильно =) напишу и сюда, может пригодиться кому...Имеем на входе нестабильную АДСЛ-линию, где периодически и бессистемно пропадает связь, причем соединение на модеме не рветься, и он продолжает "думать" что все ОК.
На выходе имеем простой скрипт проверки доступности связи и рестарта адсл-модема, если эта связь отсутствует
В наличии:
Debian 4.0 r5
ZyXEL P660RU2 EE
Для отправки модему команд нам понадобиться утилитка expect. Поэтому установим ее:
1 |
|
Cкрипт перезагрузки ADSL-линии
Сохраним данный скрипт в каком-либо месте ( у меня это /usr/local/bin ), с произвольным именем ( у меня modem_adsl_restart )
Дадим ему права на запуск:
1 |
|
Скрипт, проверяющий наличие откликов от удаленных серверов
Сохраняем там же где и предыдущий скрипт (не суть важно где, у меня опять же /usr/local/bin) c произвольным именем (у меня это ping_test)
Даем права на запуск:
1 |
|
Лог
Для сохранения вывода наших скриптов создадим директорию и файл в /var/log
1 |
|
Планировщик
Для того, чтобы скрипт вызывался периодически, добавим задание в cron:
Создаем в папке /etc/cron.d/ файл с произвольным именем (у меня это modem) и пишем в него
1 |
*/3 * * * * root if < -x /usr/local/bin/ping_test > && < -x /usr/local/bin/modem_adsl_restart >; then /usr/local/bin/ping_test >> /var/log/ping_test/pinglog.log 2>&1; fi
|
Т.е. каждые три минуты проверяем, есть ли права на запуск у наших скриптов, если есть, то запускаем проверку откликов и перенаправляем вывод в наш лог-файл.
Собственно, всё. Теперь ждем пока пропадёт сигнал и сработают наши скрипты :)
polatov 25.02.2009 12:24 #
+ 1 -
под кат и еще ошибка в заглавии s/ADLS/ADSL
ADSL D-link D500T почему-то после выключения и включения электричества перестает работать пока не перезапустишь его из под веб-интерфейса. При чем там видно, что нету коннекта с WAN. С этим модемом я имел дело на работе. Исключительно положительные впечатления, но дома он ведет себя нехорошо.
не знаю. даже не слышал о такой возможности. если просвятишь - буду рад.
На фтп.длинк.ру лежит вот такой файлик
ftp://ftp.dlink.ru/pub/ADSL/DSL-500T/Description/TI_%20CLIV01.DOC
может тебе поможет команда reboot =)
ftp://ftp.dlink.ru/pub/ADSL/DSL-500T/Description/TI_%20CLIV01.DOC
может тебе поможет команда reboot =)
Попробуй кабель получше положить дома, затухание наверное сильное.. у меня были дома проблемы с ADSL... Стоило проложить новый кабель как всё стало как часы.
у меня отличнейший заводской патчкорд от модема до машины. либо имеется в виду телефонный кабель?
Я тоже такое чудо чуть не написал. Пока не понял что модем у меня подвисает, а не дисконектится;(
А я упростил эту связку, т.к. такую схему я уже пытался использовать - не прокатило. Скрипт на expect сам по себе работал, а в связке не хотел почему мне не известно.
Поэтому, решено, не без гугления заменить скрипт на expect на еще один bash/
В него была добавлена одна строчка пойманная при заходе через веб-морду: wget -q http://192.168.1.1/rebootinfo.cgi
Если ваш новый скрипт называется как-то по-другому, то измените путь к нему указанный в 47-ой строчке скрипта ping_test.
Поэтому, решено, не без гугления заменить скрипт на expect на еще один bash/
В него была добавлена одна строчка пойманная при заходе через веб-морду: wget -q http://192.168.1.1/rebootinfo.cgi
Если ваш новый скрипт называется как-то по-другому, то измените путь к нему указанный в 47-ой строчке скрипта ping_test.
Немного не в тему...
Я вот как-то с expect'ом ковырялся, но к своему стыду не осилил и пришлось изначально планируемую связку expect+bash полностью переписать на perl. Вот, может кто-нибудь выложит по expect'у чего-нибудь интересное? Только не на школьном уровне IBM developerWorks, а как-нибудь поглубже и подробнее?
Я вот как-то с expect'ом ковырялся, но к своему стыду не осилил и пришлось изначально планируемую связку expect+bash полностью переписать на perl. Вот, может кто-нибудь выложит по expect'у чего-нибудь интересное? Только не на школьном уровне IBM developerWorks, а как-нибудь поглубже и подробнее?
я может тоже не в тему, но почти все написанное на баше я в результате переписывал на perl )
это просто разные полушария головного мозга задействованы.
ничего страшного )
ничего страшного )
на днях наваял однострочник под такую же задачу:
пока использую в ручном режиме, не настолько доверяю автоматике)
curl -d "Restart=RESTART" http://LOGIN:PASSWORD@IP/Forms/tools_system_1
путь к тулсине выцепил тоже курлом, скормив ему путь к странице админки модема с кнопкой для рестарта.пока использую в ручном режиме, не настолько доверяю автоматике)