Log in

Bekijk de volledige versie : automatische downloads mit enhanced-ctorrent



_H_o_L_E_
10-11-2006, 12:59
das ich mit dem torrent und transmission paket nicht zufrieden war, habe ich mir ein bash-script geschrieben,
dass torrentdateien in einem ordner erkennt und diese dann mit dem enhanced-ctorrent runterläd


#!/bin/sh
DL_DIR=/tmp/harddisk/Download;

if [ "$(ps | grep -i "enhanced-ctorrent" | grep -v grep)" ]
then
echo "[`date`] tqueue: ctorrent already running" >> $DL_DIR/.log ;
break ;
else
echo "[`date`] tqueue: looking for new torrent" >> $DL_DIR/.log ;

cd $DL_DIR/active ;
mv * $DL_DIR/ready ;

cd $DL_DIR/queue ;

for NAME in `find -name "*.torrent"` ;
do
echo "[`date`] tqueue: new torrent found, downloading $NAME" >> $DL_DIR/.log ;

mv $NAME $DL_DIR/active ;
cd $DL_DIR/active ;

`enhanced-ctorrent -e 0 -U 15 $NAME` ;

break ;
done

echo "[`date`] tqueue: no new torrent found" >> $DL_DIR/.log ;
fi

installationsanleitung:

die festplatte muss auf /tmp/harddisk gemountet sein (oder die DL_DIR variable ändern), es ist praktisch eine große
swap partition zu haben (um gute downloadraten zu erzielen, kann der ctorrent schon so ca 60mb verbrauchen)

1) es müssen folgende pakete installiert sein:

cron
findutils
enhanced-ctorrent
ich glaube das wars schon, bitte berichtigen, ich weiß es nicht genau

2) das script in den /opt/bin ordner tun und ausführbar machen

chmod +x /opt/bin/tqueue
3) auf der festplatte 4 ordner erstellen:

Download/
Download/active/
Download/queue/
Download/ready/
4) in der crontab muss die $PATH variable so aussehen:

PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
dann den job hinzufügen:

*/30 * * * * admin /opt/bin/tqueue
5) jetzt den cron deamon oder den ganzen router neustarten.

6) jetzt können .torrent dateien einfach in dem queue ordner abgelegt werden, jede halbe stunde wird dort
nachgeguckt und wenn kein download läuft wird ein neuer gestartet. fertige downloads kann man dem ordner
ready entnehmen. es wird immer eine torrent datei nach der anderen runtergeladen. eine logdatei befindet
sich im Download-Ordner (.log)

achtung: nach einem neustart wird der download nicht fortgesetzt, sondern unfertig verschoben, dafuer
habe ich noch keine tolle loesung gefunden, sorry

ich wuensche euch viel spaß damit, fragen und anregungen willkommen

_H_o_L_E_
11-11-2006, 10:58
neue, bessere version des scriptes, was auch abgebrochene downloads weiterführt


#!/bin/sh
DL_DIR=/tmp/harddisk/Download;

if [ "$(ps | grep -i "enhanced-ctorrent" | grep -v grep)" ]
then
echo "[`date`] tqueue: enhanced-ctorrent already running" >> $DL_DIR/.log ;
break ;
else
echo "[`date`] tqueue: looking for interrupted torrent" >> $DL_DIR/.log ;

cd $DL_DIR/active ;

for NAME in `find -name "*.torrent"` ;
do
echo "[`date`] tqueue: interrupted torrent found, downloading $NAME" >> $DL_DIR/.log ;

`enhanced-ctorrent -e 0 -U 12 $NAME` ;

mv * $DL_DIR/ready ;

exit ;
done

echo "[`date`] tqueue: no interrupted torrent found, looking for new one" >> $DL_DIR/.log ;

cd $DL_DIR/queue ;

for NAME in `find -name "*.torrent"` ;
do
echo "[`date`] tqueue: new torrent found, downloading $NAME" >> $DL_DIR/.log ;

mv $NAME $DL_DIR/active ;
cd $DL_DIR/active ;

`enhanced-ctorrent -e 0 -U 12 $NAME` ;

mv * $DL_DIR/ready ;

exit ;
done

echo "[`date`] tqueue: no new torrent found" >> $DL_DIR/.log ;
fi

legolas
11-11-2006, 14:52
Hi,

danke, echt klasse! Sag mal, wie schnell kann man mit ctorrent saugen? Einige berichten hier, dass das langsam gehen soll.

Norbert

_H_o_L_E_
11-11-2006, 17:57
also meine leitung is bei guten torrents dicht

ich hab dem router (wl500gp) 120mb swap gegeben und davon macht er auch so 60 mb voll. der prozessor is schnell genug, die ports auf jeden fall freischalten, geht am besten mit der post-firewall, alles andere hat bei mir nicht funktioniert. wie ich ihn starte siehst du ja im skript - wie gesagt: geht gut ab

meine post-firewall:


# open for torrents enhanced ctorrent
iptables -D INPUT -j DROP
iptables -A INPUT -p tcp --dport 2706 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2706 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2705 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2705 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2704 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2704 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2703 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2703 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2702 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2702 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2701 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2701 -j DNAT --to-destination
iptables -A INPUT -p tcp --dport 2700 -j ACCEPT
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2700 -j DNAT --to-destination
iptables -A INPUT -j DROP

wenn du nur ein ctorrent anhast, reicht auch ein port - ich hab sicherheitshalber mal noch mehr aufgemacht, wenn ich torrents parallel laufen lassen will. der nimmt 2706 und geht dann abwärts wenn er schon besetzt is

madseh
13-11-2006, 20:44
Hi,

danke, echt klasse! Sag mal, wie schnell kann man mit ctorrent saugen? Einige berichten hier, dass das langsam gehen soll.

Norbert


hab am WL-HDD ca 2 MBit/s erreicht, also knapp unter FTP-Speed, allerdings mit OpenWrt

ms

FastJack
28-11-2006, 07:12
Hallo _H_o_L_E_,

danke erstmal nochmal für das tolle Script zum automatischen Downloaden. Ist bei mir im Einsatz und läuft echt super :)

Hätte allerdings noch einen Vorschlag. Ich schau gerne zwischendurch mal nach wie weit der Download bisher fortgeschritten ist.
Da er ja bei Dir das alles im Hintergrund macht ist eine kleine Modifikation dafür nötig.



`screen -S $NAME enhanced-ctorrent -e 0 -U 12 $NAME` ;


das Rot markierte jeweils vor den Startbefehl vom enhanced ctorrent in dem Script schreiben.
Dadurch wird jeweils eine neue Screen Session erzeugt mit dem Namen des Torrents.
Will man nun kontrollieren wie weit diese sind, einfach im Router neu einloggen und mit screen -r die Sessions wieder anhängen :)

Hoffe das können ein paar hier gebrauchen.

Gruß FastJack

_H_o_L_E_
29-11-2006, 12:15
sehr gute idee, danke fuer den tipp

_H_o_L_E_
01-12-2006, 00:16
vielleicht doch keine so gute idee? bei mir funktioniert das irgendwie nicht, wenn ich das script per hand starte gehts, aber sobald der cron das macht, dann wird das screen sofort beendet und das script wird weiter abgearbeitet. weiß jemand woran das liegen koennte?

FastJack
01-12-2006, 07:08
Hi,

habe leider auch das gleiche festgestellen müssen.
Scheint wohl irgendwie an Cron und Screen zu hängen. Scheint so auszusehen das Screen nicht per cron aufgerufen werden kann sondern nur aus einer Console raus. Hab leider bisher auch keine Lösung gefunden. Mal nochmal das Screen Manual anschauen :)

Sorry _H_o_L_E_ :(

FastJack
01-12-2006, 07:28
like the last poster said:
screen is the solution to solve your problem.

but i want to add something:

if you want to start some torrents automatically (ALT-seeds and some long-lasting leeches) you can additionally create a configfile:
screenrc
and start screen with:
screen -c screenrc

my config looks like:
#############
screen 1 enhanced-ctorrent -C 0 -M 20 -U 20 -f -s "/opt/share/seed/save1" "/opt/share/seed/torrent1.torrent"
screen 2 enhanced-ctorrent -C 0 -M 20 -U 20 -f -s "/opt/share/seed/save2" "/opt/share/seed/torrent2.torrent"
screen 3 enhanced-ctorrent -C 0 -M 20 -U 30 -s "/opt/share/leech/save" "/opt/share/leech/torrent3.torrent"
#############
so the first 2 screen-Windows will be started with 2 seeding torrent and 20K/s Upload-Limit
and the third screen-window automatically starts a leech for torrent3 with 30 K/s upload-Limit

so you don't have to start all the torrents manually after rebooting your router. you only have to start screen with your config-file.

i normally have 10 torrents in seeding-State. so i got a little sick of starting them all manually.
with the screenrc you also can configure your screen in many ways (statusbar on the bottom, binding of keys, ...). google for screenrc and you will find some examples...


Hab das gerade im Forum gefunden. Ich denke wenn man das so abändert das z.B. das drinnsteht :
(Die .screenrc im Homeverzeichniss anlegen)



#############
startup_message off
screen 1 /opt/bin/tqueue
#############


und dann im Cron nicht direckt auf die tqueue verweist sondern auf ein Script, z.B. ectorrent.sh in dem folgendes enthalten ist :



#!/bin/sh
screen -c /<Homeverzeichniss>/.screenrc


und alle Screen eintr&#228;ge in der Original tqueue entfernt, sollte es doch so laufen ?
Vorrausgesetzt ich hab gerade keinen Denkfehler gemacht :) Hab das nur gerade theorerisch durchgespielt.
Gleich mal heute Abend noch probieren.

Gru&#223; FastJack

FastJack
02-12-2006, 11:55
hmm scheint so auch probleme zu machen *grummel*

Hab aber nu allerdings noch was anderes gefunden. In einem anderen Forum hat jemand ein selbstgeschriebenes Webinterface eingestellt.

1129

einfach die Liesmich.txt die enthalten ist lesen. PHP muss installiert sein und man muss 2 Variablen setzten in der php.ini. Bei mir l&#228;uft es mit lighttpd wunderbar.
Mit thttpd hatte ich ein paar Probleme.

_H_o_L_E_
08-12-2006, 12:22
ich habe seit neuestem das problem, dass ectorrent bei manchen torrents während des runterladens folgende meldung ausspuckt:


warn, write file failed while flush cache.

danach gehts aber normal weiter, ich vermute aber, dass er das aktuelle stueck nicht auf der festplatte gespeichert hat

dann kommt noch dazu, dass der ectorrent manchmal mit der meldung


Bad System Call

abstürzt.

ich habe die dumpfe vermutung, dass es an der festplatte liegt, weil die nur mit einem usbkabel phne zusätzliche stromversorgung (2,5 zoll) angeschlossen ist, obwohl ich nicht hoeren konnte, dass sie aussetzt.

hat da wer eine idee?

FastJack
08-12-2006, 13:43
Was f&#252;r ein USB Kabel hast den da drann? Ich w&#252;rde da mal so ein Y Kabel empfehlen das habe ich auch eins f&#252;r meine 2,5" Festplatte.
Selber hatte ich die von Dir beschriebenen Probleme noch nicht, w&#252;rde aber auch wie Du mal in die richtung tippen.

Gru&#223; FastJack

Winne2Koslowski
09-12-2006, 16:23
Hi!

Thanks for that tutorial. cTorrent seems to be running on my Asus-WLAN-HD now, but only if i start the script manually:


/opt/bin/tqueue

at least netstat says:

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 noname:2706 chello212017087151:1364 ESTABLISHED

I installed cron but i can’t figure out how to run it. Maybe it is just because i don’t know how to configure cron. My crontab looks like this:


SHELL=/bin/sh
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/30 * * * * admin /opt/bin/tqueue

Maybe i am messing things up, but i would appreciate very much if the OP could write a litle info on his step 4.

Maybe this gives some info?

[admin@Nirvana root]$ cron
cron: can't lock /opt/var/run/cron.pid, otherpid may be 95: Resource temporarily unavailable

i searched my Asus but there is no log generated by cron, so what could be wrong?

Winne2Koslowski
09-12-2006, 16:27
Oopsydaisy, nochmal in Deutsch:


Hi!

Vielen Dank für das Tutorial! cTorrent scheint bei mir aber nur zu laufen, wenn ich das script selber aufrufe:


/opt/bin/tqueue

netstat meint (unter anderem):

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 noname:2706 chello212017087151:1364 ESTABLISHED

Cron ist installiert, aber ich weiß nicht so genau, wie ich Schritt 4 im ersten Post umsetzen soll. Meine crontab sieht so aus:


SHELL=/bin/sh
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/30 * * * * admin /opt/bin/tqueue



Sagt das was über meine cron Konfiguration?

[admin@Nirvana root]$ cron
cron: can't lock /opt/var/run/cron.pid, otherpid may be 95: Resource temporarily unavailable

Ich habe die Asus durchsucht, aber ich finde kein log von cron

FastJack
11-12-2006, 10:02
Puh, muss gestehen da sich im Moment keine Ahnuung habe wo das Problem liegen kann.

ich würde vorschlagen Cron nochmal zu geinstallieren und anhand der Anleitung (http://wl500g.info/showthread.php?t=5909) nochmal zu installieren.
Damit hat es bei mir wunderbar geklappt.

ansonsten probier doch mal das Webinterface aus wo ich etwas weiter oben gepostet habe. Damit läuft es auch wunderbar und du brauchst nicht zwingend den Cron dazu :)

Datafreak
08-01-2007, 15:20
vielleicht doch keine so gute idee? bei mir funktioniert das irgendwie nicht, wenn ich das script per hand starte gehts, aber sobald der cron das macht, dann wird das screen sofort beendet und das script wird weiter abgearbeitet. weiß jemand woran das liegen koennte?

Ich habs jetzt nicht ausprobiert, aber versucht mal:


`screen -d -m -S $NAME enhanced-ctorrent -e 0 -U 12 $NAME` ;

Edit: OK geht auch nicht. "cronmeldung: Must be connected to a terminal."

MFG
Datafreak

heye
18-01-2007, 13:59
Hallo zusammen!
Hat hier schonmal jemand versucht das hier:
http://www.rahul.net/dholmes/ctorrent/ctcs.html
direkt auf dem Router zum laufen zu bringen? Damit wäre die screen Variante obsolet.
CTCS ist allerdings ein Perl-Script.
Perl für mipsel habe ich hiergefunden:
ftp://anonymous@ftp.riss-telecom.ru:21/pub/openwrt/local/whiterussian/packages/perl
Weiß allerdings nicht genau welche Packages genau benötigt werden...
Mache mich jetzt mal ans Werk, drückt mir die Daumen ;)

heye
18-01-2007, 15:22
ok, CTCS läuft.
folgende Perl Pakete werden benötigt:
perl
perlbase-autoloader
perlbase-base
perlbase-essential
perlbase-fcntl
perlbase-hostname
perlbase-socket
perlbase-sys
perlbase-xsloader

in der ersten Zeile von ctcs den Pfad von der Perl Installation einsetzen, ctcs mit ./ctcs & starten, den ctorrent um die Option -S 127.0.0.1:2780 ergänzen und dann mit einem Browser auf ip-des-routers:2780.
fertig :D

Shift
18-01-2007, 18:58
Das ist jetzt aber nur für den WL500 Premium? oder auch für den Deluxe?

heye
18-01-2007, 20:17
Das sollte beides sowohl auf dem Premium als auch auf dem Deluxe laufen. Der Deluxe ist halt etwas schwachbrüstiger.

wengi
19-02-2007, 14:12
Hallo Allerseits,

ich hatte hier noch einen WL-HDD rumliegen und hab mich am Sonntag mal an die OLEG-Firmware gemacht.
Und jetzt muss ich feststellen: Ich bin total begeistert :-)))

nachdem ich nun alles am laufen habe bin ich über diesen Thread gestolpert.

Meine Frage:
kann ich auch mehrere enhanced-ctorrents starten? Wenn ja, wie?

Ich als Anfänger habe mir den screen-Versuch angesehen (das zielt wohl in die Richtung..)

Aber kann ich nicht einfach in die tqueue an dieser Stelle
if [ "$(ps | grep -i "enhanced-ctorrent" | grep -v grep)" ]

so etwas wie einen Max-Torrents-Zähler einbauen?
Also "Wenn Anzahl laufender Torrents >= Vorgegebener Anzahl dann Meldung ' Max. Anzahl erreicht' ansonsten starte einen Weiteren."

wengi

anton610
19-02-2007, 20:19
Hallo!!
Kleine Frage:
Kann ich mit screen einfach 2 oder mehrere screens starten und in den screens dann die verschiedenen enhanced-ctorrent downloads, und diese dann mit dem ctcs überwachen??

DAnke

heye
02-03-2007, 10:32
Zugegebenermassen ist mein script um die torrents zu starten nicht sonderlich elegant. Es startet die torrents ohne bereits laufende ctorrent zu überprüfen. Nach dem Download werden die torrents auch nicht verschoben. Andererseits kann ich so (WL500gP mit 64 swap) recht locker mehrere torrents aufrufen. Hatte maximal acht torrents am Start, sollten aber auch mehr möglich sein.