Home > linux, script > Скрипты для переподключения pppoe соединения на ADSL модеме

Скрипты для переподключения pppoe соединения на ADSL модеме

Всем привет!

На неделе от безделья написал скрипты для сброса PPPOE сессии на ADSL модеме через ПК
Поскольку у меня нет белого IP адреса я пользуюсь ими для переподключения сессии.
Это позволяет мне качать с файлообменников без задержек и ожидания.

Скрипты написаны для ОС Linux
Требуется программа – expect
На смену IP адреса уходит ~20 секунд.
Тестировалось на модеме StarNet перешитый в Acorp Lan 120

Идея:

При обрыве соединения ppp0 происходит автоматическое переподключение.
Всего 3 скрипта, всё сложить в одну папку.

p1 – Узнаёт PID демона PPPD

Листинг:

Copy SourceCopy HTML

  1. #!/usr/bin/expect -f
  2. log_user 0
  3. spawn telnet 192.168.1.1
  4. expect “BusyBox on router login:” {send “root\r”}
  5. expect “Password:” {send “Admin\r”}
  6. expect “#” {send “ps ax |grep pppd\r”}
  7. log_user 1
  8. send “exit\r”
  9. expect eof

p2 - Убивает PPPD по PID возвращённому скриптом run.sh (смотри ниже)
И модем СРАЗУ автоматически поднимает заново.

Листинг:

Copy SourceCopy HTML

  1. #!/usr/bin/expect -f
  2. set pid [lindex $argv 0]
  3. log_user 0
  4. spawn telnet 192.168.1.1
  5. expect “BusyBox on router login:” {send “root\r”}
  6. expect “Password:” {send “Admin\r”}
  7. expect “#” {send “kill $pid”}
  8. send “exit\r”
  9. expect eof

Скрипт run.sh – Парсит PID от p1 и отсылает его в качестве аргумента p2 который и прибивает PPPD
Листинг:

#!/bin/sh
./p1 | grep pppd | grep -v grep | awk '{print $1;}' | xargs ./p2

Даём права на исполнение и просто делаем: ./run.sh
Всё остальное пройдёт автоматом.
Поправьте IP модема на свой.

Для желающих прикрутить цикл проверки IP:
Пропарсить IP с модема можно на пример так:

ifconfig eth0 | colrm 1 10 | awk -F "[: ]" '$1 ~ /^inet$/{print $3}'

Т.е пишем например скрипт p3 который возвращает ip
Вот готовый:

Copy SourceCopy HTML

  1. #!/usr/bin/expect -f
  2. log_user 0
  3. spawn telnet 192.168.1.1
  4. expect “BusyBox on router login:” {send “root\r”}
  5. expect “Password:” {send “Admin\r”}
  6. expect “#” {send “ifconfig ppp0\r”}
  7. log_user 1
  8. send “exit\r”
  9. expect eof

И парсим его вывод.
Например:

$ ./p3.sh | colrm 1 10 | awk -F "[: ]" '$1 ~ /^inet$/{print $3}'
90.151.225.121

Скрипты можно модифицировать, например:
Можно написать цикл проверки IP адреса если Вас интересует конкретный диапазон IP.

В общем всё зависит от Вашей фантазии.

  1. Павел
    May 1st, 2009 at 18:29 | #1

    Здравствуйте!
    Когда гугл выдал мне заголовок этой статьи “Скрипты для переподключения pppoe соединения на ADSL модеме”, очень обрадовался. Но потом увидел, что скрипты для линукса. Так вот, можно ли сделать так, что бы те же функции выполнялись на Windows XP?

  2. Павел
    May 1st, 2009 at 18:31 | #2

    Если кто знает, напишите, пожалуйста на v’bk just-cannabis@mail.ru или стучитесь 1342272

  3. May 1st, 2009 at 21:14 | #3

    Можно, делается через vbs скрипт.
    У меня где-то пример завалился.

    Вот, нашёл: http://club.2-u.ru/forum/viewtopic.php?id=371
    Там пример есть, переделай под себя.

    Ещё можно на Perl написать:
    http://it-shnik.blogspot.com/2008/09/net-telnet-telnet.html

  4. vprokofyev
    August 17th, 2009 at 20:35 | #4

    Хорошая статья, тоже занимался написанием подобных скриптиков — интересно, конечно, спора нет. Но потом это изобретение велосипедов надоело, и в качестве роутера я поставил FreeBSD, поднял ppp-демон mpd. Кстати, функционал автоматического переподнятия сессии в нем из коробки.

  1. No trackbacks yet.