Форум русскоязычного сообщества Xubuntu

Установка и настройка => Сети и интернет => Тема начата: Gucul от апреля 23, 2013, 22:08:31

Название: Програмная автоматическая перезагрузка модема
Отправлено: Gucul от апреля 23, 2013, 22:08:31
Ситуация следующая. Модем intercross 5633e (PPPoE) периодически теряет соединение. После перезагрузки модема соединение восстанавливается. Тех. поддержка не скрывая указывает на то, что проблема не аппаратная, а на линии. Так вот вопрос заключается в том, как автоматически производить restart модема при разрыве связи.

p/s: прошу благосклонно отнестись к разрешению моей проблемы т.к. с Xubuntu я знаком недавно. В гугл ходил, читал и от поверхностных разъяснений в голове ничего кроме каши не прибавилось ))
Название: Програмная автоматическая перезагрузка модема
Отправлено: xf∞ от апреля 23, 2013, 22:52:35
если вы настраивали соединение в терминале через команду sudo pppoeconf, то попробуйте там написать sudo pon
если не поможет, то нужно попробовать настроить соединение в network-manager'е.
Название: Програмная автоматическая перезагрузка модема
Отправлено: Gucul от апреля 23, 2013, 23:44:49
Цитата: xf∞ от апреля 23, 2013, 22:52:35
если вы настраивали соединение в терминале через команду sudo pppoeconf

Так я не настраивал. Моя настройка заключалась лишь в том, что я забил в проводное соединение "Wired connectеon" IP, маска, шлюз, DNS и инет завелся. Мне нужен скрипт, чтобы подымать соединение при разрыве связи. В силу того, что мои интеллектуальные способности пока не в силах решить данную задачу, то я прошу помощи. Объясните плиз подробно и доходчиво новичку в "лине", что нужно сделать. Какой скрипт, в какой директории и как его запустить.
xf∞, все одно спасибо, что откликнулись!
Название: Програмная автоматическая перезагрузка модема
Отправлено: VJM от апреля 24, 2013, 02:05:11
Немного не ясно причем тут линукс, если модем отдельное устройство и именно оно управляет соединением?

Модем в каком режиме настроен?
Название: Програмная автоматическая перезагрузка модема
Отправлено: Gucul от апреля 24, 2013, 05:04:41
Цитата: VJM от апреля 24, 2013, 02:05:11
Немного не ясно причем тут линукс, если модем отдельное устройство и именно оно управляет соединением?

Скрипт с определенным интервалом времени опрашивает заданный сервер при отсутствии пинг-ответа посылает команду в телнет о перезагрузке модема
Цитата: VJM от апреля 24, 2013, 02:05:11
Модем в каком режиме настроен?

Роутер
Название: Програмная автоматическая перезагрузка модема
Отправлено: VJM от апреля 24, 2013, 13:25:32
Если в режиме роутера, то соединением управляет не система, а непосредственно модем. И рестартить соединение придется только на нём. Вообще он так и должен делать сам. На большинстве модемов есть функция автодозвона в случае потери коннекта.

Посмотрите такое решение Вашей проблемы. ССЫЛКА (http://welinux.ru/post/334/). Если решение толковое, прошу отписаться и оно пойдёт на главную сайта.
Название: Програмная автоматическая перезагрузка модема
Отправлено: Gucul от апреля 24, 2013, 17:56:39
Цитата: VJM от апреля 24, 2013, 13:25:32
Если в режиме роутера, то соединением управляет не система, а непосредственно модем. И рестартить соединение придется только на нём. Вообще он так и должен делать сам. На большинстве модемов есть функция автодозвона в случае потери коннекта.

Так предусмотрено и должно быть, а на деле линия ресетит модем да так хитро это делает, что модем в этот момент всеми своими индикаторами сигналит, что все путем и он в сети даже не пытается рестартить.
Цитата: VJM от апреля 24, 2013, 13:25:32
Посмотрите такое решение Вашей проблемы. ССЫЛКА (http://welinux.ru/post/334/). Если решение толковое, прошу отписаться и оно пойдёт на главную сайта.

Благодарю! Курю инфу. О результате несомненно отпишусь!
Название: Програмная автоматическая перезагрузка модема
Отправлено: Gucul от апреля 25, 2013, 11:00:15
Цитата: VJM от апреля 24, 2013, 13:25:32
ССЫЛКА (http://welinux.ru/post/334/). Если решение толковое, прошу отписаться и оно пойдёт на главную сайта.


Бился день-ночь и к сожалению ничего хорошего, как впрочем и плохого по этим скриптам сказать не могу они у меня попросту не завелись (хотя вру хорошее все же скажу, данный мануал мне дал кое-какое представление о происходящем и дальнейшую опору изголятся над другими скриптами).
Итак, что на сегодняшний день, что я имею:

Скрипт для проверки соединения touchmodem_ping.sh в ручном режиме запускается, но при странных особенностях в логе пишет, что соединение есть даже если выдернуть телефонный провод из модема ))

#!/bin/bash                                                                                                                         
# часы                                                                                                                             
date_time="`date +%H:%M:%S`"                                                                                                       
# дата                                                                                                                             
date="`date +%d-%m-%Y`"                                                                                                             
#Тестируемый адрес                                                                                                                 
testip="ya.ru"                                                                                                             
                                                                                                                                   
kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')                                                                 
if [ $kol == 0 ]                                                                                                                   
    then                                                                                                                           
        echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING                                                                         
        sleep 10                                                                                                                   
        kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')                                                         
            if [ $kol == 0 ]                                                                                                       
                then                                                                                                               
                    /scripts/touchmodem_reboot.sh                                                                                   
                    echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time '  Нет интернета. Начат перезапуск модема.</p>' >> /var/www/html/netsrv.info/status.html
                    echo $date $date_time Нет интернета. Начат перезапуск модема.  >> /var/log/restartinet.log                     
                exit 0                                                                                                             
            fi                                                                                                                     
fi                                                                                                                                 
echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time'  Интернет есть..</p>' >> /var/www/html/netsrv.info/status.html
echo $date $date_time Интернет есть..  >> /var/log/restartinet.log


И скрипт для перезагрузки модема touchmodem_reboot.sh

#!/usr/bin/expect                                                                                                                   
                                                                                                                                   
spawn telnet 192.168.1.1                                                                                                           
sleep 3                                                                                                                             
expect "login:"                                                                                                                     
send "admin\r"                                                                                                                     
sleep 3                                                                                                                             
expect "Password:"                                                                                                                 
send "admin\r"                                                                                                                     
sleep 3                                                                                                                             
expect "#"                                                                                                                         
send "reboot\r"                                                                                                                     
sleep 3                                                                                                                             
expect eof


этот скрипт честно отрабатывает свою задачу и при запуске исправно перезагружает модем, правда тоже пока в ручном режиме, потому как cron я пока так и не победил.

p/s: скрипты наглым образом были позаимствованы в интернете ))
Название: Програмная автоматическая перезагрузка модема (РЕШЕНО)
Отправлено: Gucul от апреля 26, 2013, 07:07:52
Вопрос решен! Вот рабочий мануал  Автоматический перезапуск модема (http://www.celteh.com/forums/topic/383-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BC%D0%B0/) мною проверенно!

p:s\ автору почет и уважение за проявленную смекалку и сознательность поделится с интернет-общественностью скриптами!
Название: Програмная автоматическая перезагрузка модема (РЕШЕНО)
Отправлено: Gucul от апреля 28, 2013, 04:17:22
Нашел время описать ход своих действий. Думаю, что ссылки ссылками, а форуму xubuntu-ru.net не помешает свой инструктаж.

Устанавливаем expect

sudo apt-get install expect

в каталоге root создаем подкатолог skripts и туда скидываем скрипты modem_test.sh и modem_reboot.sh

скрипт modem_reboot.sh

#!/usr/bin/expect                                                                                                                   
                                                                                                                                   
spawn telnet xxx.xxx.xxx.xxx                                                                                                           
sleep 3                                                                                                                             
expect "login:"                                                                                                                     
send "admin\r"                                                                                                                     
sleep 3                                                                                                                             
expect "Password:"                                                                                                                 
send "admin\r"                                                                                                                     
sleep 3                                                                                                                             
expect "#"                                                                                                                         
send "reboot\r"                                                                                                                     
sleep 3                                                                                                                             
expect eof


Меняем Password и login при необходимости, а также  xxx.xxx.xxx.xxx на адрес своего модема

скрипт modem_test.sh

#!/bin/bash                                                                                                                         
# часы                                                                                                                             
date_time="`date +%H:%M:%S`"                                                                                                       
# дата                                                                                                                             
date="`date +%d-%m-%Y`"                                                                                                             
#Тестируемый адрес                                                                                                                 
testip="xxx.xxx.xxx.xxx"                                                                                                             
                                                                                                                                   
kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')                                                                 
if [ $kol == 0 ]                                                                                                                   
    then                                                                                                                           
        echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING                                                                         
        sleep 10                                                                                                                   
        kol=$(/bin/ping -c 4 $testip | grep "received" | awk '{print $4}')                                                         
            if [ $kol == 0 ]                                                                                                       
                then                                                                                                               
                    /root/skripts/modem_reboot.sh                                                                                   
                    echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time'  Нет интернета. Начат перезапуск модема.</p>' >> /var/www/html/netsrv.info/status.html
                    echo $date $date_time Нет интернета. Начат перезапуск модема.  >> /var/log/restartinet.log                     
                exit 0                                                                                                             
            fi                                                                                                                     
fi                                                                                                                                 
echo '<p style="line-height:100%; margin-top:0; margin-bottom:0;">'$date $date_time'  Интернет есть..</p>' >> /var/www/html/netsrv.info/status.html
echo $date $date_time Интернет есть..  >> /var/log/restartinet.log


"xxx.xxx.xxx.xxx" вводим адрес своего DNS

теперь при детальном рассмотрении скрипта видем строчку  /root/skripts/modem_reboot.sh которая гласит, что при отсутствии интернета скрипт modem_test.sh обращается к скрипту modem_reboot.sh и если Вы скрипты поместили в директорию /root/skripts/ то эту строку оставляем без изменений.

а также видем строки /var/www/html/netsrv.info/status.html и /var/log/restartinet.log  естественно в каталоге /var создаем эти подкаталоги и файлы под запись логов

делаем скрипты исполняемыми

sudo chmod +x /root/skripts/modem_test.sh

sudo chmod +x /root/skripts/modem_reboot.sh

даем скриптам права

sudo chmod 750 /root/skripts/modem_test.sh

sudo chmod 750 /root/skripts/modem_reboot.sh

вызываем crontab

sudo crontab -e

в crontab ввести

*/10 * * * * /root/skripts/modem_test.sh

что говорит о том, что cron будет запускать скрипт каждые десять минут

сохранить Ctrl+O потом нажать Enter и выйти Ctrl+X

От себя добавлю, что автор скриптов ссылку на которого я привел выше не рекомендует устанавливать значение меньше десяти минут. Я же поставил 30 минут, но это уже решать только Вам (более подробную информацию о cron найдете сами)
Еще хочу отметить тот факт, что это не панацея если модем завис наглухо и в этот момент нельзя выйти даже в вебморду модема, тут уже как ранее верно подметил VJM "линь" не причем. ))
Название: Програмная автоматическая перезагрузка модема
Отправлено: VJM от апреля 28, 2013, 13:21:23
Благодарю. Скоро будет на главной.