Скрипты для переподключения 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.

В общем всё зависит от Вашей фантазии.
blog comments powered by Disqus