Recibir un email al finalizar una descarga

Sé que os había dicho que os hablaría de Samba, pero en esta entrada voy a explicaros de forma sencilla cómo hacer que transmission nos mande un email cuando finalice una descarga. Quizás para algunos no sea interesante, pero a mi me gusta despertarme por las mañanas y ver cuántas cosas se han descargado durante la noche.

Si recordáis la entrada anterior en la que modificamos la configuración de transmission después de su instalación (settings.json), una de las lineas nos permitía indicarle un fichero a ejecutar cada vez que finalice una descarga (script-torrent-done-filename). Pues eso es lo que vamos a usar.

Lo primero que hay que hacer (como siempre) es conectarnos a la Raspberry mediante ssh xbian@[dirección IP]

Captura de pantalla 2014-01-05 a la(s) 21.11.26

En la configuración de transmission yo ya había dejado indicado dónde se encontraba el fichero a ejecutar. Si no lo hicisteis, es buen momento para mirar la entrada anterior para ver cómo cambiarlo.

El envío de los emails lo vamos a hacer mediante el comando sendemail. En XBian no viene instalado por defecto, por lo que tenemos que hacerlo. Además, dicho comando utiliza ciertas librerías de Perl que tampoco están instaladas, así que podemos aprovechar a instalarlo todo junto mediante la ejecución de sudo apt-get install libio-socket-ssl-perl libnet-ssleay-perl perl sendemail No pasa nada si lo ejecutamos y resulta que ya estaban instalados.

Captura de pantalla 2014-01-05 a la(s) 21.15.38

Captura de pantalla 2014-01-05 a la(s) 21.15.53

Ahora debemos crear un fichero ejecutable donde indicaremos el comando para el envío del email. En mi caso me he creado una carpeta llamada scripts, y ahí voy a crear un fichero llamado download_complete.sh donde iré añadiendo cosas que quiero que se ejecuten al terminar una descarga. Para crear el fichero usamos el comando sudo nano download_complete.sh

Captura de pantalla 2014-01-05 a la(s) 21.24.23

Voy a indicaros la cadena que habrá que escribir dentro del fichero y a continuación os la explico paso a paso:

sendemail -f torrated@gmail.com -t torrated@gmail.com -u "[Transmission] Descarga finalizada" -m "Se ha completado la descarga del trabajo \n$TR_TORRENT_NAME\nHora: $TR_TIME_LOCALTIME\nFolder: $TR_TORRENT_DIR\nID: $TR_TORRENT_ID" -s smtp.gmail.com:587 -xu torrated -xp <CONTRASEÑA> -v -o username=torrated -o password=<CONTRASEÑA> -o tls=yes

Captura de pantalla 2014-01-05 a la(s) 21.25.14

  1. sendemail <-nombre del comando
  2. -f <remite>@gmail.com <-(From) direccion que envía
  3. -t <destino>@gmail.com <-(To) direccion de destino
  4. -u “[Tramission] Descarga finalizada” <-Asunto del email. Importante que esté entre comillas dobles.
  5. -m <-Lo que viene después es el texto del email, que también deberá estar entre comillas dobles.
  6. “Se ha completado la descarga del trabajo\n <-\n sirve para hacer salto de linea.
  7. $TR_TORRENT_NAME\n <-esta variable es el nombre del torrent descargado.
  8. Hora: $TR_TIME_LOCALMACHINE\n <-hora de finalización de descarga.
  9. Folder: $TR_TORRENT_DIR\n <-carpeta donde se ha descargado.
  10. ID: $TR_TORRENT_ID” <-número de ID de la descarga en la cola. Ojo, que aquí ya hay que cerrar las comillas.
  11. -s smtp.gmail.com:587 <-servidor de SMTP y puerto. Si no es gmail será diferente.
  12. -xu <usuario> <-usuario de gmail para enviar el email. Será igual a remite.
  13. -xp <contraseña> <-contraseña del usuario de gmail.
  14. -v <-(Verbose) para detallar más información en caso de fallo.
  15. -o username=<usuario> <-otra vez el usuario
  16. -o password=<password> <-otra vez la contraseña
  17. -o tls=yes <-para autenticación segura de gmail

Los campos que he marcado como <azul> son los que tendríais que modificar con vuestros propios datos. Básicamente son el usuario y contraseña. Yo en mi caso tengo puestos como dirección de origen y de destino la misma.

Una vez tenemos puesta la cadena de envío, salimos de nano utilizando CTRL+X , después le damos Y para confirmar que queremos guardar y finalmente ENTER para el nombre del fichero.

Ahora ya tenemos el fichero creado pero tenemos que hacerlo ejecutable ya que si no transmission no podría hacer nada con él. Podemos ver que por defecto los permisos que tiene un fichero creado con nano son de lectura y modificación para el propietario haciendo ls -l

Captura de pantalla 2014-01-05 a la(s) 23.28.02

Vemos que efectivamente los permisos son -rw-r–r–, que significa:

  1. <-es un archivo. Si fuera directorio sería una una d.
  2. rw- <-permisos de lectura y escritura para el propietario.
  3. r– <-permiso de solo lectura para el grupo.
  4. r– <-permiso de lectura para el resto (other).

Para que no haya líos a mi me gusta ponerle permisos de ejecución para todo el mundo, lo que se logra fácilmente con el comando sudo chmod +x download_complete.sh

Si hacemos de nuevo un listado mediante ls -l vemos que ahora aparece una x en todas las ternas, lo que significa ejecución.

Captura de pantalla 2014-01-05 a la(s) 23.29.43

Lo siguiente que podemos hacer es probar nuestro script, y para ello nada tan fácil como escribir sh seguido del nombre del fichero.

Captura de pantalla 2014-01-05 a la(s) 23.34.23

En este punto me he encontrado que a veces, igual que en este caso, puede darnos un error: invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332

Creo que este error viene dado por un problema de incompatibilidad entre TTL y la versión de Perl instalada. La forma de solucionarlo es editar el fichero de sendemail mediante sudo nano /usr/bin/sendemail y luego modificar la linea donde dice SSLv3 TSLV1 para dejar solamente SSLv3. En mi caso la linea era la 1907, pero en vuestro caso puede variar. Para editar el fichero directamente en la linea que queremos podemos usar el comando sudo nano +1907 /usr/bin/sendemail

Captura de pantalla 2014-01-05 a la(s) 23.38.37

Captura de pantalla 2014-01-05 a la(s) 23.41.07

Ahora podemos volver a hacer la prueba de email lanzando de nuevo nuestro comando.

Captura de pantalla 2014-01-05 a la(s) 23.42.50

Aquí vemos que ahora el email ha salido, por lo que solamente nos faltaría irnos a nuestra bandeja de entrada y comprobar que efectivamente está ahí. Prometo que el próximo día os cuento cómo crear carpetas compartidas para que podamos acceder a ellas desde nuestra red local.

Anuncios