Bittorrent med screen

Från Unix.se, den fria unixresursen.

Det är ofta man vill ha gång många torrent-nedladdningar på samma gång. Det löser man bäst (tycker jag) med screen och en textbaserad eller ncursesbaserad klient som bittorrent-curses (http://bittorrent.com) (följer med den officiella klienten), btdownloadcurses (http://www.bittornado.com/) (följer med BitTornados klient) eller rtorrent (http://libtorrent.rakshasa.no/).

Om man är lat (som jag är) så skriver man ett script om man vill sätta igång flera nedladdningar samtidigt. Jag kallar scriptet multitorrents och det används på följande sätt:

 samel@force:/mnt/data/torrents$ multitorrents fil1.torrent fil2.torrent

eller

 samel@force:/mnt/data/torrents$ multitorrents *.torrent

Då startas screen med n st fönster där n är antal torrentfiler man har angett som argument. Jag använder btdownloadcurses som program. Scriptet kan användas till andra saker, som att till exempel öppna flera textfiler i vim när man ska koda.

När man ser att ens nedladdningar är igång så trycker man C-a d. (Håll inne ctrl och a, släpp knapparna och tryck sen på d). Då detachas screen och man kan se vilka screen-sessioner som är tillgängliga genom att skriva

 samel@force:~$ screen -ls
 There is a screen on:
         6909.screenscript       (Detached)
 1 Socket in /var/run/screen/S-samel.

Sen re-attachar man genom att skriva

   samel@force:~$ screen -r 6909.screenscript

Eller om man vet att man bara har en screen-session igång så kan man skriva

 samel@force:~$ screen -R


Scriptet ser ut så här:


 #!/bin/bash
 # multitorrents, a script by Samel
 ######## BEGIN CONFIGS #####################
 #what program to run
 program=btdownloadcurses
 #dir to put conf files in
 dir=/tmp/screenscript
 ######## END CONFIGS   #####################
 # create the dir where we put our config files
 if [ ! -d $dir ]; then
         mkdir $dir
 fi
 # find a file that does not exist
 # that will be our conf file
 nbr=0
 while [ -e $dir/$nbr ]; do
         let nbr++
 done
 conf=$dir/$nbr
 touch $conf
 # write the conf file
 echo source ~/.screenrc >> $conf
 win=0
 for i in $@; do
         echo screen $win $program $i >> $conf
         let win++
 done
 # start screen
 screen -c $conf -S screenscript

Spara filen, gör den exekverbar (chmod +x multitorrents) och lägg den i en katalog som finns i din $PATH, exempelvis ~/bin eller /usr/bin.

Personliga verktyg