Articulo resumen y guía rápida

  1. Instalar Raspbmc en la tarjeta SD mediante el método que más nos guste. Enlace: http://www.raspbmc.com/download/
  2. Iniciar el sistema conectado con el cable de red y todos los discos enchufados, y esperar a que termine de configurarse.
  3. Conectar el dongle WiFi y reiniciar habiendo desconectado el cable de red.
  4. Configuración adicional de XBMC:
    1. Habilitar bob light support (para hacer un ambilight en el futuro).
    2. Cambiar región.
    3. Cambiar país.
    4. Deshabilitar Ignorar los artículos al ordenar (cuestión de gustos).
    5. Habilitar Permitir el renombrado y borrado de archivos (para poder borrar archivos después de verlos).
    6. Habilitar Actualizar la colección en el arranque (nunca viene mal).
    7. Seleccionar la acción por defecto: mostrar información (nuevamente, cuestión de gustos).
    8. Idioma de subtitulo preferido: english (cada cual que elija el idioma que quiera).
    9. Servicio de tv por defecto: conseguir más > opensubtitles.org > instalar (para poder bajar los subtítulos de las series).
    10. Seleccionar ubicación para el tiempo (me gusta poder ver la previsión).
    11. Instalar Add-on de Youtube (para poder ver los trailers).
    12. Habilitar AirPlay (aunque aun no he sido capaz de hacerlo funcionar).
  5. Reiniciar el sistema para aplicar los cambios.
  6. Añadir los vídeos a la biblioteca indicando si las carpetas son de series o de películas. Enlace: Añadir contenido a XBMC
  7. Revisar si hay series o películas que ha cogido mal o no ha reconocido y arreglarlo.
  8. Actualizar el sistema mediante el comando sudo apt-get update && sudo apt-get upgrade
  9. Instalar transmission mediante el comando sudo apt-get install transmission-daemon Enlace: Instalación de transmission
  10. Parar transmission-daemon mediante sudo /etc/init.d/transmission-daemon stop para configurar el fichero /var/lib/transmission-daemon/info/settings.json y luego re-arrancarlo con sudo /etc/init.d/transmission-daemon start
  11. Instalar sendemail mediante el comando sudo apt-get install libio-socket-ssl-perl libnet-ssleay-perl perl sendemail Enlace: Recibir un email al finalizar una descarga
  12. Arreglar sendemail con sudo nano +1907 /usr/bin/sendemail y modificar la linea donde dice SSLv3 TSLV1 para dejar solamente SSLv3
  13. Instalar flexget mediante sudo apt-get install python python-setuptools ; sudo easy_install flexget mechanize transmissionrpc
  14. Comprobar que flexget se ha instalado bien ejecutando flexget -V
  15. Crear un directorio de configuracion de flexget con mkdir /home/pi/.flexget y editar la configuracion con nano /home/pi/.flexget/config.yml
  16. Editar el fichero config.yml para que envíe un email al encontrar un fichero, la frecuencia del daemon y añadir todas las series a seguir. Enlace: Instalación de flexget y configuración (I): series.
  17. Comprobar la sintaxis de la configuracion mediante flexget check
  18. Hacer un test de descarga mediante flexget –test execute
  19. Indicar el punto donde tiene que empezar a descargar las series mediante flexget series begin “<SERIE>” S<temporada>E<capitulo>” Enlace: Cómo decirle a flexget que ya hemos visto un capítulo
  20. Iniciar el daemon mediante flexget daemon start -d Enlace: FlexGet en Daemon mode y Scheduling
  21. Instalar curl
  22. Configurar fichero de download_complete para mover los archivos .mkv, borrar carpeta bajada y actualizar la librería con curl. Enlace: Movimientos de ficheros y auto-actualizacion de librería
  23. Ejecutar ssh-keygen para generar las claves y añadir la clave pública de nuestro equipo al archivo /home/pi/.ssh/authorized_keys de la raspberry. Enlace: Utilización de claves pública y privada

 

Contenido fichero download_complete.sh

#!/bin/bash

#Se envia un email de que ha finalizado la descarga
USUARIO="<usuario>"
PASSWORD="<contraseña>"
DIRECCION="$USUARIO@gmail.com"
ASUNTO="[Transmission] Descarga finalizada"
MENSAJE="Se ha completado la descarga del trabajo \n$TR_TORRENT_NAME\nHora: $TR_TIME_LOCALTIME\nFolder: $TR_TORRENT_DIR\nID: $TR_TORRENT_ID"
SERVIDOR="smtp.gmail.com:587"
sendemail -f $DIRECCION -t $DIRECCION -u $ASUNTO -m $MENSAJE -s $SERVIDOR -xu $USUARIO -xp $PASSWORD -v -o username=$USUARIO -o password=$PASSWORD -o tls=yes

#mueve los ficheros mkv de la carpeta de descarga a su carpeta padre
find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -name "*.mkv" ! -name *sample* -exec mv {} "$TR_TORRENT_DIR" \; | logger

#borra los archivos y carpetas que no son mkv de la carpeta de descarga
find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" ! -name "*.mkv" -exec sudo rm -r {} \; | logger #debian-transmission tiene que ser sudoer para borrar

#Actualizacion de la libreria de video
curl --data-binary '{ "jsonrpc": "2.0", "method": "VideoLibrary.Scan", "id": "mybash"}' -H 'content-type: application/json;' http://localhost/jsonrpc

 

Contenido fichero config.yml

schedules:
 - tasks: '*'
 interval:
 hours: 2

tasks:

  tv-shows:
    series_premiere: no

    email:
      from: <usuario>@gmail.com
      to: <usuario>@gmail.com
      smtp_host: smtp.gmail.com
      smtp_port: 587
      smtp_username: <usuario>
      smtp_password: <contrasena>
      smtp_tls: yes

    transmission:
      path: /media/e864a2d9-5479-41a6-852f-4dbd2166cd12/tvshows
      host: localhost
      port: 9091
      username: transmission
      password: <contraseña de transmssion>
      addpaused: no

    rss: http://rss.thepiratebay.se/208

    thetvdb_lookup: yes

    quality: 720p HDTV h264

    regexp:
      reject:
        - SUB
        - DUAL
        - WEB
        - CENSORED
        - SCREENER
        - LATINO
        - PSYPHER

    content_filter:
      reject:
        - '*.avi'
        - '*.mpg'
        - '*.mpeg'

    series:
      - 12 Monkeys:
        path: "/media/My\ Book/tvshows/12 Monkeys"
        set:
          tvdb_id: 272644
      - 2 Broke Girls:
        path: "/media/My\ Book/tvshows/2 Broke Girls"
        set:
          tvdb_id: 248741

Utilización de claves pública y privada

Hoy os voy a decir cómo hacer para que no nos pida contraseña cada vez que conectamos por ssh a nuestra Raspberry Pi.

Para ello haremos uso de nuestras claves pública y privada, que no son más que un par de claves que permiten autenticarnos en otro dispositivo (además de otras muchas más cosas). El funcionamiento es sencillo: generamos nuestro par de claves (una pública y una privada), nos guardamos la privada para nosotros y podemos compartir la clave púbica con cualquier otro equipo donde queramos conectarnos. Haciendo uso de unos algoritmos, el sistema verificará que nuestra clave privada y nuestra clave pública son parte del mismo sistema y nos permitirá entrar.

Así pues, lo primero que hay que hacer es generar nuestro par de claves en caso de que no las tengamos. ¿Cómo saber si las tenemos? fácil, abrimos una ventana de terminal y accedemos al directorio .ssh que cuelga de nuestra carpeta home.

imagen 1

En este caso podéis ver que el único fichero que hay es el que se generó cuando me conecté a la Raspberry y me preguntó si confiaba en ese dispositivo (de ahí que se llame known_hosts). Eso quiere decir que no tengo claves. Para crearlas nada tan sencillo como ejecutar ssh-keygen

imagen 2

Aquí podeis ver que han pasado varias cosas:

  • lo primero es que me preguntó dónde quería alojar los ficheros de claves. He pulsado ENTER para dejar el directorio por defecto, que es .ssh como vimos anteriormente.
  • Lo segundo que me preguntó fue un passphrase. Esta sería una contraseña que habría que utilizar cada vez que hagamos uso de las claves para que, en caso de que la clave privada se vea comprometida por robo o extravío, aun y así no se podría acceder a los sitios de confianza al no disponer del passphrase. Como en mi caso lo que quiero es dejarme de claves, pulso ENTER dos veces y lo dejo en blanco.

Después de eso dice que las claves se han generado correctamente y nos muestra la imagen de nuestra clave. Muy bonita.

Bien, si ahora volvemos a ver qué hay en nuestro directorio .ssh deberíamos ver algo más que antes.

imagen 3

Ahí pueden verse los dos ficheros con las claves: id_rsa, que contiene la clave privada (este fichero no debe ser compartido con nadie), e id_rsa.pub, que contiene la clave pública. Este es el que compartiremos por ahí. ¿Cómo lo hacemos? fácil. Lo primero es mostrar el contenido del fichero público.

imagen 4

Ahora tenemos que seleccionar con el ratón toda esa ristra de caracteres y copiarlo al portapapeles.

imagen 5

Después nos conectamos por ssh a la Raspberry con la contraseña que hemos utilizado hasta ahora (recuerda que si no la has cambiado es raspberry)

imagen 6

En este momento, si intentamos entrar en el directorio .ssh del usuario xbian no debería dejarnos ya que ese directorio no existe (a no ser que hayas hecho ssh hacia algún otro equipo desde la Raspberry).

imagen 7

No pasa nada porque vamos a hacer uso de ssh-keygen para generar un par de claves para este usuario y así el directorio .ssh se creará automáticamente.

imagen 8

¿Veis como la imagen de la clave es distinta? Bien, ahora deberíamos poder acceder al directorio .ssh

imagen 9

Ahí están nuestras claves para el usuario xbian.

Ahora lo que queremos es poder acceder automáticamente desde el Mac en la Raspberry. Para ello tenemos que decirle a ésta que mi usuario del Mac es de confianza. Esto lo conseguimos creando un fichero llamado authorized_keys con la ayuda del comando nano authorized_keys.

imagen 10

Dentro del fichero pegamos el contenido del portapapeles, que era el contenido de nuestro fichero de clave pública de la cuenta del Mac. Hacemos CTRL+X para salir, le damos a Y para guardar los cambios, y pulsamos ENTER para dejar el nombre del fichero como está. Ahora, deberíamos tener un nuevo fichero en nuestro directorio .ssh

imagen 11

Ahí lo tenemos, así que lo último que nos queda por hacer es probarlo. Así que hago exit para terminar la conexión ssh y luego intento conectarme de nuevo.

imagen 12

¡Premio! como veis no me ha pedido la contraseña en ningún momento. Es algo muy sencillo y que nos evitará tener que estar escribiendo la contraseña cada vez que nos conectamos, cosa que haremos mucho para continuar configurando el sistema en las siguientes entradas.