ADSL модем теряет коннект до перезагрузки? Не проблема!

    Началось все с того, что в один прекрасный день я стал обладателем ADSL-роутера D-Link 2640U. Так как раздаю я интернет еще и друзьям, то включен он у меня круглосуточно, и тут обнаружилась одна досадная неприятность — он переодически терял коннект с провайдером и не хотел подключаться до перезагрузки. Поиски и обновления прошивки не решили проблемы, а так как дома меня иногда не бывает, а перегружать модем надо, то в один прекрасный день был написан скрипт, который делает это автоматически.

    Выбор пал на Питон чисто случайно — начал изучать язык и решил попрактиковаться. Вот что из этого вышло:

    import os
    import re
    import time
    import sys
    import telnetlib
    from threading import Thread
     
    class testit(Thread):
       def __init__ (self,ip):
          Thread.__init__(self)
          self.ip = ip
          self.status = -1
       def run(self):
          pingaling = os.popen(«ping -q -c2 »+self.ip,«r»)
          while 1:
            line = pingaling.readline()
            if not line: break
            igot = re.findall(testit.lifeline,line)
            if igot:
                self.status = int(igot[0])
                if self.status == 0:
                    tn = telnetlib.Telnet(HOST)
                    tn.read_until(«BCM96338 ADSL Router»)
                    tn.read_until(«Login:»)
                    tn.write(user + "\n")
                    tn.read_until(«Password: »)
                    tn.write(password + "\n")
                    time.sleep(5)
    #tn.write(«ifconfig ppp_0_1_32_1\n»)
                    tn.write(«reboot\n»)
                    time.sleep(5)
                    tn.write(«logout\n»)
                    time.sleep(60)
     
    testit.lifeline = re.compile(r"(\d) received")
     
    ip = «213.180.204.8»
    HOST = «192.168.168.1»
    user = 'user'
    password = 'password'
     
    current = testit(ip)
    current.start()
     


    Скрипт пингует заданный айпи адрес и, если тот недоступен, заходит по телнету на модем и отдает команду для перезагрузки.
    Стоит у меня запуск по крону каждые 3 минуты (подобрано опытным путем — самый оптимальный вариант)

    ip-адрес, который надо проверять.
    HOST — адрес модема.
    user, password — соответственно, имя и пароль пользователя на модеме.
    строчку BCM96338 ADSL Router у меня выдает модем привходе через телнет, вы можете изменить ее на ту, которая соответствует вашему модему.

    Вот и все собственно. Исправления и дополнения приветствуются.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 65

      0
      та же проблема, только с ASUS'ом, но вообще проблемы у прова… решают в данный момент))
        +1
        Ну проблема, я не думаю, что у провайдера моего, а даже, если и проблема, сомневаюсь, что решать ее будут только из-за моей жалобы… А Вам повезло видимо)
        • UFO just landed and posted this here
            +1
            До этого был модем у меня DSL-2520U, работал он несколько месяцев без сбоев. Так что я предусматриваю кривое железо все таки.
              0
              У меня был D-link DSL-2500u раз в неделю перезагружал вечером, но через 4 месяца стал терятся интернет в день раз 5-6, друзья подарили ASUS, таже фигня! Позвонил прову они проверили линию, сказали что проблема с ней, решают!
              • UFO just landed and posted this here
                  0
                  То был просто ADSL модем, а это ADSL модем + Wi-Fi роутер
                0
                Как почитать про эти D-Link, то старшно становится, к любому устройству у них есть пачка недовольных коментариев. Я вот решил рискнуть и купил устройство, как у автора топика. Пол года работает и как бы претензий нет.
                  0
                  Еще через полгода будет проблема…
                  Будет гореть красная лампочка у питания и раз 5-7 секунд мигать status.
                  У этой модели очень часто дохнет конденсатор. Почему? Не знаю. Но уже видел 3 (один из них мой) у которых в питании вздулся кондер. И главное все они проработали ориентировочно год.
                    +1
                    Плюс мой. Вздулся злосчастный конденсатор на 330MF/25V в блоке питания неделю назад.
                    Пока поставил на подмену стренький модем+свич.
                    Всё никак не дойду до магазина с радиодеталями что бы прикупить конденсатор.
                    Этим болеют, похоже, все экземпляры серии.
                      0
                      На днях тоже заменил этот конденсатор. Он забеременел после 2 лет эксплуатации. Перепаял на более емкий — 470 мкФ 35 Вольт. Несколькими месяцами ранее вздулись несколько кондёров в самом модеме, особенно самый большой на 3300 мкФ, но я его совсем выкинул, так как не было замены. Ничего, работает. :)
                    0
                    Не знаю про другие модели — взял себе Dlink DIR-300.
                    Тоже много шуму было, какой он поганый, как глючит и тормозит. Искали прошивки. Хотя новые прошивки не решали всех проблем.
                    Я решил все-же купить, но последняя прошивка у меня появилась раньше приборчика.

                    Когда настроил — пашет как зверь. За 3 месяца было раза 3 подвисания. Без никаких прошивок. Никаких нареканий нет. Ни к скорости, ни к качеству работы.
                      0
                      Просто длинк очень массовый, потому и плохих отзывов много. Его порой даже в продуктовых супермаркетах купить можно.
                      0
                      2500u у меня дома, на работе и у пары знакомых. все подключены к одному провайдеру (укртелеком), у всех раньше работали модемы без сбоев месяцами, сейчас же практически каждое утро надо ребутить. не думаю, что это совпадение и модемы сразу у всех заглючили…
                        0
                        У меня тот же длинк, и тоже укртелеком, они сами где-то пишут что раз в сутки перегружаются (зачем-то).
                      0
                      2540 тоже тяряет коннект, но почему-то только одно подключение, второе остается подключенным
                        0
                        Если у вас провайдер предоставляет доступ через pppoe подключение, то почему вы тогда не поднимаете его средствами операционной системы?
                          0
                          мне удобнее именно так, и на то есть причины — вай фай, второй интернет канал с pppoe, и так далее.
                            0
                            это самая частая отмазка укртелекома. У меня дома 4 компа, телефоны по WIFi так что мне без роутинга ни как.
                            У меня тоже D-Link через год перестал автоматом восстанавливать интернет. Скорее всего прийдется новый покупать, линксис или асус.
                            0
                            Там, кстати, кавычки » в скрипте замените на " " везде.
                              0
                              Мне кажется ребутать и проверять состояние линии проще по SNMP
                                0
                                Приму к сведению. Спасибо!
                                  0
                                  это как? Можете чуть подробнее или ссылку на пример.
                                  0
                                  Если вдруг не будет пинговаться адрес, который вы пишете в скрипте, шлюз будет бесконечно ребутиться. Лучше пинговать адрес шлюза провайдера, либо адрес днс сервера, которые выдаются DHCP сервером.
                                    0
                                    ага, и на котором очень часто зарублен icmp :)
                                      0
                                      Ну тогда Google :)
                                    0
                                    пара замечаний, часто можеи перезагружать опасно, т.к. он может в итоге умерть почти полностью. если что-то будет серьезное с каналом, то линк не поднимется и модем будет ребутаться каждые три минуты. мой таким макаром умер и стал показываться толкьо форму для аплоада прошивки. после перепрошивки заработал.
                                    скрипт я использовал чуть другой, в частности проверял несколько ипов и банусил модем только если все не отвечают.
                                    pastebin.com/m70d6d756

                                    В итоге заменил этот говно-модем на 500T + wl500gp. реконнект занимает 10 секунд и установленные соединенния не успевают разоваться.
                                      0
                                      А по snmp его нельзя ребутить?
                                        0
                                        Вроде можно — не копал в эту сторону.
                                        +1
                                        Рекомендую сразу перепаять конденсаторы (если гарантия уже вышла) в блоке питания и, по возможности, в самом аппарате. Поставить качественные.
                                        Прибор очень чувствителен к питанию и при незначительном отклонении напряжения может, к примеру, отказаться работать wi-fi.
                                        Основная причина в комментариях.
                                          0
                                          а может можно перегружать саму микросхему модема? без перегрузки OS?
                                            0
                                            Опа, даже не знал что у моего рутера (Siemens SL2-141-I) есть телнет-интерфейс. Подобной проблемы у меня, правда, нет — реконнектится он сам, да и потеря связи бывает очень редко. Но сам факт надо принять к сведению, авось что-нибудь полезное в голову взбредет :)
                                              0
                                              вообще, это проблема модема…
                                              У меня была аналогичная проблема (с мопедом Iskratel) долго ругались с администраторами, ничего не менялось… Поменял модем на Edimax — и с тех пор я к модему вообще не смотрю…
                                              А до того приходилось писать програмулину (под винду), которая пингает интернет, и если соединения не было, ребутала модем… На самом деле, когда модем перегружается — это не есть гуд:
                                              В многих случаях после ребута у Вас будет новый IP адрес (если он динамический). И даже используя сервисы динамического ДНС у Вас будут проблемы с соединением на свой комп, по скольку базы на этих серверах обновляются не в реалтайме, а через некоторое время (минут 15 или что-то в этом роде)…
                                                +2
                                                такой же модем (D-Link 2640U-BRU-C), подобная проблема (автоматом не поднимал pppoe соединение после обрыва)
                                                помогла последняя прошивка (1.21 от 31.07.2009) forum.dlink.ru/viewtopic.php?t=72399
                                                  0
                                                  Опа! Не видел, что вышла новая 2 недели назад. Спасибо! Попробую.
                                                    0
                                                    У меня такой же модем стоит и до перепрошивки тоже постоянно терял коннект. Попробуй эту прошивку. Она реально помогает.
                                                  0
                                                  у меня у самого был такой же. Прошиваться не хотел, постоянно вылетал.
                                                  Тоже написал небольшую софтину, только на C#.
                                                  Кстати не обязательно использовать логин и пароль, там можно напрямую вызвать <адрес_модема>/reboot.cgi
                                                    +1
                                                    А что мешает запустить такой скрипт на самом модеме? Зачем для этого держать включенный комп?
                                                      0
                                                      А зачем вообще держать включенный модем, если комп выключен? У меня комп — сервер и раздает инет, качает торренты и кучу всего еще делает…
                                                      0
                                                      Обратил внимание, что такой зависон происходит при скачке торрентов.
                                                      То есть модем работает неделями когда я ничего не качаю.
                                                      Как повешу торренты качаться, так может пару раз в день слетать.
                                                      Это все на «Стриме», видимо они засекают большие прием/отдачу трафика и перерубают. Причем хитро рубят — при диагностике модем только на последнем(вроде) пункте фалит.
                                                      Хотя возможно, что это всего лишь совпадение, но со временем мне так все меньше кажется.
                                                      • UFO just landed and posted this here
                                                          0
                                                          у меня торренты — это неосновная задача вовсе…
                                                            +1
                                                            Не выключаю сутками, так как мне(и не только мне) может понадобиться удаленный доступ к нему в любое время суток.
                                                            Ну и Folding@home работает =)
                                                              0
                                                              Тем более модем это вещь — поставил, настроил и забыл… он тем более через Wi-Fi роутер вещает интернет на комп, ноут, нэтбук и XBOX360 так что…
                                                          0
                                                          Занятно, я делал что-то подобное, но для Windows. Правда метод совсем другой использовал, по HTTP с админки роутера запрашивал определенную страничку :)
                                                            +1
                                                            бедный яндекс :)
                                                              0
                                                              У меня D Link 2500U. При скаче торрентов стабильно, в одно и тоже время, терялся коннект. Тоже сначало наисал скриптик, но потом появилась неофициальная прошивка которая сама ребутит модем www.foss.kharkov.ua/g1/projects/dlink2500u-bru-d/kap_firmware.htm

                                                              Посмотрите на оф. форуме длинка, может и для вашей модели есть подобное.
                                                                0
                                                                Был случай с потерей коннекта в ADSL-роутере D-Link 2640U.
                                                                Клиент сказал, что сбивает связь и нужно регулярно перезагружать (до 5-15 раз в час).
                                                                У меня дома, такой же провайдер — Укртелеком. Проверил — работает корректно!
                                                                Приношу обратно клиенту — не работает корректно.
                                                                Техподдержка после тренинга по навешиванию лапши на уши умными доводами переводила стрелки на проблему в модеме.
                                                                Но я предполагал, что проблема на линии. Так как с сервером и модемом все ОК.
                                                                Клиент подал заявку на проверку линии — техотдел дал сроки больше месяца ждать специалистов.
                                                                Далее был поднят на ноги начальник отделения Укртелекома, и линию проверили на следующий день с утра…
                                                                и действительно, проблема была в том, что некачественно проложили/соединили линию в нескольких отрезках, и из-за этого модем терял связь, тем более, что линия очень длинная (уходит за пределы города), соответственно присутствует немного затухание сигнала.
                                                                Вывод: в моей практике, данный девайс оказался просто чувствительным к сигналу.
                                                                После восстановления линии — D-Link 2640U работает идеально!
                                                                  0
                                                                  Я для этих целей пытался приспособить скрипт на bash. Модем D-Link 2500U. Но у меня это почему-то так и не вышло.
                                                                  Причем, причину своего провала я не понимаю до сих пор.
                                                                  Вывод на терминал. Наблюдаю, как скрипт пингует несуществующий IP, телнетится к модему, управляемый утилитой «expect» дожидается приглашения, вводит последовательно логин, пароль, дальше отдает команду reboot, я наблюдаю, как модем завершает работу, заканчивается всё выводом команды «free» и telnet отключается.
                                                                  И всё бы хорошо, если бы пинги не продолжали идти от самого начала работы скрипта и до конца. :) Т.е. модем продолжает свою работу, даже не заметив, что он уже вроде как перезагрузиться должен :)
                                                                  При этом, все те же действия, выполненные вручную, успешно отправляют модем в ребут.
                                                                    +2
                                                                    Маленькое замечание re.compile(r"(\d) received") тут явно излишний. RegExp очень мощная штука но не стоит ими злоупотреблять для таких простых случаев это как их пушки по воробью.
                                                                    Для такого простого случая достаточно проверки вхождения в строку, например:
                                                                    «recived» in strtest что эквивалентно поиску подстроки
                                                                    подойдёт также
                                                                    str.find(«received»)
                                                                    str.count(«received»)
                                                                    str.endswith(«received»)
                                                                    Где str проверяямая строка.
                                                                      0
                                                                      "received" in str
                                                                      !
                                                                      +1
                                                                      Была похожая проблема с модемом Zyxel Prestige 660R
                                                                      Нашел утилитку ztnbatch.exe и засунул в крон задачу с содержанием: Если не пингуется пров, запустить ztnbatch.exe -h 192.168.1.1 -p 1234 -c «sys reboot»
                                                                        0
                                                                        А торрентами вы часто пользуетесь? У меня linksys wag54gs регулярно «подвисает.» Т.к. я пользуюсь торрентами — много соединений. В какой-то момент ему просто перестаёт хватать памяти и новые соединения уже не установить.
                                                                          0
                                                                          Он теряет коннект не только, когда включены торренты. Вообще нет никакой закономерности.
                                                                            –1
                                                                            Возможно это связано с провайдером. У моего провайдера (Казахтелеком), например, разрыв сессии каждые 24 часа. Теряют коннект что прошлый D-Link DSL-2500U, что используемый в данный момент TP-Link TD-W8910G. Кажется, D-Link в новых прошивках добавили фичу, вроде отправки какого-то запроса PPP-серверу для проверки состояния PPPoE-сессии и ее перезапуска, если PPP-сервер не ответил на запрос.
                                                                            0
                                                                            А у нас вообще этих проблем нет, ибо нет телефонных линий, ШПД и вообще ничего нет к чему можно подключить ADSL модем ;-( Видно кому-то очень не хочется, чтобы Чечня вышла в сеть ;-)
                                                                              0
                                                                              Ну вы все таки прорвались ;)
                                                                                0
                                                                                Вы бы точно были бы в шоке, увидев через какое «чудо мысли» я подключаюсь к сети ;-)
                                                                                Через немецкого провайдера SkyDsl идет входящий трафик 50-60 кб/с, через спутниковую тарелку, а исходящий — мегафон-модем 9кб/с ;-) обходится это всё 5-6 тыщ рублей в месяц…
                                                                                0
                                                                                Где то я недавно читал статистуку запросов к Яндексу в том числе и из Чечни, если есть статистика, значит есть и доступ ;)
                                                                                  0
                                                                                  Инет есть, но его не так легко подключить, например как в соседнем Дагестане или Ингушетии, да и не стабильный он
                                                                                +2
                                                                                Прям моя проблема ) только у меня DSL-2500U. Я заюзал nncron, который пингует, например ya.ru, ребутнуть модем можно по линку 192.168.1.1/rebootinfo.cgi тоже из nncron
                                                                                ps. по моему это несколько проще, чем на питоне )
                                                                                  0
                                                                                  Задался использованием этого скрипта. А он выдает ошибку
                                                                                  File "/home/lion58/script.py", line 20
                                                                                  self.status = int(igot[])
                                                                                  ^
                                                                                  SyntaxError: invalid syntax

                                                                                  Поскольку я не програмист, подскажите в чем тут тема базара.
                                                                                    0
                                                                                    Может не та версия питона стоит?
                                                                                      0
                                                                                      Тут 3 ошибки:

                                                                                      1) Все кавычки должны быть либо ' либо "
                                                                                      2) Должно быть self.status = int(igot[0])
                                                                                      3) Должно быть if self.status == 0:
                                                                                      0
                                                                                      в моем модеме нету телнета и пришлось писать скрипт на питоне для рестарта модема через веб-морду
                                                                                      если вам это нужно — читать и качать по адресу
                                                                                      Программная перезагрузка DSL модема uvsw.narod.ru/project/restart_dlink.html

                                                                                      Only users with full accounts can post comments. Log in, please.