Привет Хабраюзеры!
Написал скрипты для сброса PPPOE сессии на ADSL модеме через ПК
Вдохновил меня на написание скриптов ВОТ ЭТОТ топик.
Поскольку у меня нет белого IP адреса я пользуюсь ими для переподключения сессии.
Это позволяет мне качать с файлообменников без задержек и ожидания.
Скрипты написаны для ОС Linux
Требуется программа — expect
На смену IP адреса уходит ~20 секунд.
Тестировалось на ADSL модеме StarNet перешитый в Acorp Lan 120
Ну м конечно же Вам потребуется telnet или ssh доступ к Вашему ADSL модему.
Идея:
При обрыве соединения ppp0 происходит автоматическое переподключение и скачивание следующего файла из списка.
Я просто запускаю этот скрипт на сервере и за ночь он скачивает всё что мне нужно.
Всего 3 скрипта, всё сложить в одну папку.
p1 — Узнаёт PID демона PPPD
Листинг скрипта p1:
p2 — Убивает PPPD по PID
И модем СРАЗУ автоматически поднимает заново.
Листинг скрипта p2:
Поправьте IP модема на свой.
Ещё нам потребуется скрипт DownloadFromRS
Он как раз предназначен для скачивания файлов с Рапиды через консоль, использую wget.
Теперь нам нужно отредактировать скрипт DownloadFromRS
таким образом, что-бы после окончания скачивания он выполнял скрип для сброса PPP сессии.
Листинг модифицированного скрипта:
Осталось сделать файл исполняемым, закинуть нужные ссылки в файл input.txt и запустить скачивание.
Все скрипты должны лежать в одной папке.
Всё очень просто и эффективно.
PS. Так-же можно сделать обрыв VPN соединения и т.д
Динамический IP — это круто!
Скачать все скрипты одним архивом можно ТУТ
Так-же Вы можете посмотреть их с подсветкой синтаксиса в моём БЛОГЕ.
Написал скрипты для сброса PPPOE сессии на ADSL модеме через ПК
Вдохновил меня на написание скриптов ВОТ ЭТОТ топик.
Поскольку у меня нет белого IP адреса я пользуюсь ими для переподключения сессии.
Это позволяет мне качать с файлообменников без задержек и ожидания.
Скрипты написаны для ОС Linux
Требуется программа — expect
На смену IP адреса уходит ~20 секунд.
Тестировалось на ADSL модеме StarNet перешитый в Acorp Lan 120
Ну м конечно же Вам потребуется telnet или ssh доступ к Вашему ADSL модему.
Идея:
При обрыве соединения ppp0 происходит автоматическое переподключение и скачивание следующего файла из списка.
Я просто запускаю этот скрипт на сервере и за ночь он скачивает всё что мне нужно.
Всего 3 скрипта, всё сложить в одну папку.
p1 — Узнаёт PID демона PPPD
Листинг скрипта p1:
#!/usr/bin/expect -f
log_user 0
spawn telnet 192.168.1.1
expect "BusyBox on router login:" {send "root\r"}
expect "Password:" {send "Admin\r"}
expect "#" {send "ps ax |grep pppd\r"}
log_user 1
send "exit\r"
expect eof
p2 — Убивает PPPD по PID
И модем СРАЗУ автоматически поднимает заново.
Листинг скрипта p2:
#!/usr/bin/expect -f
set pid [lindex $argv 0]
log_user 0
spawn telnet 192.168.1.1
expect "BusyBox on router login:" {send "root\r"}
expect "Password:" {send "Admin\r"}
expect "#" {send "kill $pid"}
send "exit\r"
expect eof
Поправьте IP модема на свой.
Ещё нам потребуется скрипт DownloadFromRS
Он как раз предназначен для скачивания файлов с Рапиды через консоль, использую wget.
Теперь нам нужно отредактировать скрипт DownloadFromRS
таким образом, что-бы после окончания скачивания он выполнял скрип для сброса PPP сессии.
Листинг модифицированного скрипта:
#!/bin/bash
################################################
#Purpose: Automate the downloading of files from rapidshare using the free account
#using simple unix tools.
#Date: 14-7-2008
#Authors: Slith, Tune
#Improvements: Please email them to jwhatson@gmail.com
#Post Feedback and comments to emkay.unpointless.com/Blog/?p=63
#Notes: To use curl instead of wget use 'curl -s' and 'curl -s -d'
#Version: 1.2 - Rapidshare has added a wait time in between file downloads. On top of your download
#to start. This has been fixed.
#Added a 'kill time' feature. Specify killTime as an hour of the day and if the time is greater than this.
#the script will end. Useful for using cron to start script at offpeak time and killing it when off speak ends.
################################################
mirror=dt.rapidshare.com;
## possible mirrors
# cg.rapidshare.com
# l34.rapidshare.com
# tg.rapidshare.com
# gc2.rapidshare.com
# dt.rapidshare.com
# tl2.rapidshare.com
# l32.rapidshare.com
# l3.rapidshare.com
# gc.rapidshare.com
# l33.rapidshare.com
# tl.rapidshare.com
# cg2.rapidshare.com
killTimeEnable=0
killTime=9
function getOutputFromFreeUserSubmit(){
URL=$(wget -q -O - $line | grep "<form id=\"ff\" action=\"" | grep -o 'http://[^"]*');
output=$(wget -q -O - --post-data "dl.start=Free" "$URL");
}
while read line
do
if [[ $killTimeEnable -eq 1 && $(date +%H) -gt $killTime ]]; then exit; fi;
getOutputFromFreeUserSubmit output; #call getOutputFromFreeUserSubmit, result is stored in $output
posibleWaitTime=$(echo "$output" | grep "try again in about" | grep -o "[0-9]\{1,3\}");
if [ -z "$posibleWaitTime" ]; then #check for zero lenght string
echo "No wait time, likely to be the first file you have downloaded in a while";
else
echo "Waiting $[ $posibleWaitTime+1] minutes (in between file download wait)";
sleep $[ $posibleWaitTime+1]m;
getOutputFromFreeUserSubmit output; #Now we have waited we will try again...
fi
time=$(echo "$output" | grep "var c=[0-9]*;" | grep -o "[0-9]\{1,3\}");
ourfile=$(echo "$output" | grep "document.dlf.action=" | grep -o "http://[^\"]*$mirror[^\\]*");
echo "Waiting $time secs for download of $ourfile";
sleep $time;
wget $ourfile;
./p1 | grep pppd | grep -v grep | awk '{print $1;}' | xargs ./p2;
sleep 5;
done < input.txt
Осталось сделать файл исполняемым, закинуть нужные ссылки в файл input.txt и запустить скачивание.
Все скрипты должны лежать в одной папке.
Всё очень просто и эффективно.
PS. Так-же можно сделать обрыв VPN соединения и т.д
Динамический IP — это круто!
Скачать все скрипты одним архивом можно ТУТ
Так-же Вы можете посмотреть их с подсветкой синтаксиса в моём БЛОГЕ.