Как стать автором
Поиск
Написать публикацию
Обновить

Скачиваем с Rapidshare в консоли и автоматически сбрасываем PPP сессию

Время на прочтение3 мин
Количество просмотров859
Привет Хабраюзеры!

Написал скрипты для сброса 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 — это круто!

Скачать все скрипты одним архивом можно ТУТ
Так-же Вы можете посмотреть их с подсветкой синтаксиса в моём БЛОГЕ.
Теги:
Хабы:
Всего голосов 12: ↑9 и ↓3+6
Комментарии1

Публикации

Ближайшие события