コンソールでRapidshareからダウンロードし、PPPセッションを自動的にリセットします

こんにちはHabrausers!



スクリプトを書いて、 PC経由でADSLモデムのPPPOEセッションをリセットしました

このトピックに関するスクリプトを書くことに触発されました。

私は白いIPアドレスを持っていないので、それらを使用してセッションを再接続します。

これにより、ファイルホスティングから遅滞なく待つことができます。



Linux用に記述されたスクリプト

プログラムが必要- 期待

IPアドレス変更するには、 約20秒かかります。

Acorp Lan 120に変更されたStarNet ADSLモデムでテスト済み

もちろん、 ADSLモデムへのtelnetまたはsshアクセスが必要です



アイデア



ppp0接続が切断されると 、自動的に再接続され、リストから次のファイルがダウンロードされます。

このスクリプトをサーバーで実行すると、必要なものがすべて一晩でダウンロードされます。

3つのスクリプトのみ、すべてを1つのフォルダーに入れます。



p1 - PPPDデーモンのPIDを認識する



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 - PIDによるPPPDを強制終了ます

そして、モデムは直接自動的に再び発生します。



リスト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を使用して、コンソールからRapidaからファイルをダウンロードするように設計されています。



次に、 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はクールです!



すべてのスクリプトを1つのアーカイブにダウンロードする

BLOGで構文を強調表示して、それらを見ることができます。



All Articles