Your Ad Here

Tue May 18 15:19:35 EDT 2010

Descargas automatizadas de torrents en el NSLU2

Como dice el titulo, automatizado (gracias a cron) y con una consola para monitorear las descargas. La consola luce algo así:

Este es el script que uso para descargar torrents a horas y días pre-determinadas, es un wrapper de btlaunchmanycurses.py y lo llamo en un cronjob a distintas horas y días. Demosle un vistazo y luego hablamos de las opciones:

#!/bin/bash
DESCARGA_VELOCIDAD=1458
COMPARTE_VELOCIDAD=113
LIMPIAR_INTERVALO=5
MIN_PUERTO=27777
MAX_PUERTO=27799
TORRENTS_CARPETA="/home/TU_USUARIO_AQUI/descargas"
DESCARGAS_DESTINO="/home/TU_USUARIO_AQUI/descargas"
test -d $TORRENTS_CARPETA || mkdir -p $TORRENTS_CARPETA
test -d $DESCARGAS_DESTINO || mkdir -p $DESCARGAS_DESTINO
cd $TORRENTS_CARPETA
nice /usr/bin/btlaunchmanycurses.py $TORRENTS_CARPETA \
--saveas_style 3 \
--upnp_nat_access 0 \
--minport $MIN_PUERTO \
--maxport $MAX_PUERTO \
--max_upload_rate $COMPARTE_VELOCIDAD \
--max_download_rate $DESCARGA_VELOCIDAD \
--auto_flush $LIMPIAR_INTERVALO

Para empezar la descarga solo basta poner los *.torrent en ~/descargas/ y el script hará el resto.

saveas_style: Que nombre le va a poner a la descarga del torrent. Acepta hasta tres valores del 1 al 3:

  • 1= Lo renombra al nombre que el torrent especifica.
  • 2= Lo salva bajo el nombre del torrent.
  • 3= Lo salva dentro de un directorio que tiene el nombre especificado en el torrent.
  • La ultima (3) es la opcion que usaremos para tener todo mas ordenado.

upnp_nat_access: Intenta autoconfigurar un puerto UPnP en el router para que le haga foward al server. En mi caso uso la primera opción que lo deshabilita. Pero aquí tienen la lista completa de opciones:

  • 0= deshabilitada.
  • 1= modo 1, esta es rápida y es la que btlaunchmanycurses usa como predeterminada.
  • 2= modo 2, esta es un poco mas lenta.

minport: El puerto que va a usar para escuchar, en caso de que este puerto este ocupado o no este disponible, btlaunchmanycurses utilizara el siguiente puerto y así de manera sucesiva hasta llegar al maxport.

maxport: El número de puerto máximo en el que puede escuchar, el predeterminado es el 60000.

max_upload_rate: El máximo de ancho de banda a usar para compartir nuestros torrents, este acepta el numero máximo de kB/s o estas dos opciones:

  • 0= Sin limites.
  • -1= Automático.
El valor predeterminado es 0 (sin limites).

max_download_rate: El máximo de kB/s que se pueden descargar, el valor predeterminado es 0 que indica que no tiene limites.

auto_flush: Los minutos entre cada flush al disco, el predeterminado es 0 que indica deshabilitado.

Una opcion que Uds pueden considerar es --random_port que toma los valores 0 o 1, esta opción le dice a btlaunchmanycurses que use un puerto aleatoriamente seleccionado dentro del rango de minport y maxport.


El Cronjob.

30 0  *   *   *     /home/TU_USUARIO_AQUI/descargas/cron_torrent.sh >/dev/null 2>&1
8  8  *   *   *     /home/TU_USUARIO_AQUI/descargas/killbtlaunch.sh >/dev/null 2>&1
Como verán ejecuto dos scripts distintos, uno que levanta el torrent y otro que lo mata. veamos el primero, cron_torrent.sh:
#!/bin/bash
screen -D -m -S "torrents-nightly" /home/TU_USUARIO_AQUI/descargas/download.sh
Este a las 12:30am creara un screen de nombre torrents-nightly y dentro de ese screen ejecutara el script que discutimos arriba el cual lo llamo download.sh. El segundo script que se ejecuta a las 8:08am termina las descargas. Aquí esta el cod igo fuente de killbtlaunch.sh:
#!/bin/bash
for X in `ps ax | grep -i -E 'btlaunchmanycurses|bittornado|irssi|torrents-nightly' | grep -v grep |awk '{print $1}'`
do kill -9 $X
done


Publicado por orvtech | Hipervínculo permanente | Etiquetado como: Linux, Scripts, NSLU2