Articles plus anciens

Dans le cadre de la sortie de Lucid Lynx (Ubuntu 10.04), je vais (oui je sais je suis en retard) ré-installer complétement mon système, puisqu’à cette occasion je change complétement mon PC.


Il va donc me falloir retrouver/lister toutes les applications que j’utilise et les ré-installer toutes.


Pour le premier point, lister les applications utilisé, je peux me baser sur un fichier que je maintiens depuis que je suis sur Ubuntu (avec plus ou moins d’assiduité).


Pour le deuxième point (ré-installation), il y a peu de temps je suis tombé sur cet article A Cleanstart for your new Ubuntu (Install Packages from a list) qui met a disposition un script bash pour ré-installer complétement un PC à partir d’un fichier contenant une liste de package.


Donc en mettant en forme mon fichier listant les applications utilisées avec le script réalisé par SilverWav, je peux gagner pas mal de temps.

Mais je n’étais pas complétement satisfait du script, ce dernier nécessite que tous les dépôts nécessaires soit préalablement configurés, or pour moi c’est 1 seul et même opération que d’ajouter le dépôt et d’installer les packages correspondant.

J’ai donc modifié le script d’installation et le format du fichier de configuration.


Fichier de configuration

Voici un exemple de fichier de configuration :


# ********************** Accessoires ******************************
 
parcellite # gestion du presse-papier
 
ppa:shutter/ppa
shutter # logiciel de capture d'écran évolué
 
# ********************** Autres ******************************
 
deb http://www-personal.umich.edu/~tjwatt/suldr/ debian extra > samsungCLX3175_driver.list
http://www-personal.umich.edu/~tjwatt/suldr/suldr.gpg
samsungmfp-configurator-data samsungmfp-configurator-qt4 samsungmfp-driver samsungmfp-data samsungmfp-scanner # driver imprimante Samsung CLX 3175
 
# ********************** Bureautique ******************************
 
ppa:claydoh/ppa
kmymoney2 # gestion des finances personnels
 
gcstar # gestionnaire de collections (livres)
 
# ********************** Education ******************************
 
gcompris tuxpaint # gcompris + logiciel de dessin matriciel pour les enfants
 
childsplay childsplay-alphabet-sounds-fr # Childsplay + langue française
 
pysycache pysycache-buttons-beerabbit pysycache-buttons-crapaud pysycache-buttons-wolf pysycache-click-sea pysycache-dblclick-butterfly pysycache-move-animals pysycache-move-food pysycache-move-plants pysycache-move-sky pysycache-move-sports pysycache-puzzle-cartoons pysycache-puzzle-photos # Psycache + extensions
 
# ********************** Graphisme ******************************
 
gimp gimp-help-fr # retouche d'image matriciels
 
inkscape # logiciel de dessin vectoriel
 
# Logiciels Photo
ppa:dlynch3/ppa
rapid-photo-downloader # Copie et renommage de photos depuis un appareil photo numérique
 
deb http://jbrout.free.fr/download/debian binary/ > jbrout.list
jbrout # tagging des photos
 
ppa:damien-moore/ppa
phraymd # tagging des photos
 
hugin # assemblage de photos en panorama
 
-f-spot # suppression de f-spot (mono+lourd)
 
# ********************** Internet ******************************
 
ppa:deluge-team/ppa
deluge-common deluge-gtk # IHM GTK du client torrent deluge
 
-transmission-common transmission-gtk # suppression de transmission client torrent installé par défaut dans Gnome
 
# Nouveautés : DAILY > BETA > DEV > STABLE (n'existe pas sous Linux)
#ppa:chromium-daily/ppa
#ppa:chromium-daily/beta
ppa:chromium-daily/dev
chromium-browser # navigateur web
 
pidgin # messagerie instantannée
 
-empathy empathy-common nautilus-sendto-empathy # suppression d'empathy loiciel de messagerie instantannée installé par défaut dans Gnome et de son intégration dans Nautilus
 
thunderbird thunderbird-locale-fr thunderbird-gnome-support # client email
 
deb http://linux.dropbox.com/ubuntu lucid main > dropbox.list
key:FC918B335044912E
nautilus-dropbox # stockage on-line et synchronisation de fichiers
 
# ********************** Jeux ******************************
 
frozen-bubble # jeux où il faut exploser des boules en en associant 3 par couleur
 
# ********************** Outils sytèmes ******************************
 
htop # monitoring mémoire / cpu ...
 
language-pack-fr language-pack-gnome-fr # pack de langue pour completement franciser Ubuntu
 
# ********************** Son et Vidéo ******************************
 
deb http://packages.medibuntu.org/ lucid free non-free > medibuntu.list
key:0C5A2783
non-free-codecs # codecs audio-vidéo non libres
 
asunder # ripp des CDs
 
ppa:handbrake-ubuntu/ppa
handbrake-gtk # ripp des DVDs
 
ppa:c-korn/ppa
vlc # lecteur multimédia (audio/vidéo)
 
# ********************** Outils (non desktop) ******************************
 
autofs # montage automatique de système de fichier distant
 
nfs-common # client NFS
 
deb http://archive.canonical.com/ubuntu lucid partner > partner.list
sun-java6-jre # framework Java
 
vim # editeur VI amélioré



Le fichier de configuration accepte 7 formats de lignes différentes, correspondant chacune à différentes opérations d’installation.


Commentaires

Toutes les lignes commençant par un # sont considérées comme des commentaires


Ajout d’un dépôt PPA

Toutes les lignes du fichier de configuration commençant par « ppa: » sont considérées comme l’adresse d’un dépôt PPA et sera ajouté au système par la commande :

add-apt-repository ppa:[nom du ppa]


Les PPA (Personnal Package Archives) sont des dépôts mis à disposition de tout à chacun sur le site Launchpad, c’est à dire par Canonical.


Ajout d’un dépôt tierce (non PPA)

Toutes les ligne du fichier de configuration commençant par « deb http: » sont considérées comme l’adresse d’un dépôt APT.

Ce genre de ligne doit en plus respecter la syntaxe suivante :

deb http://url.serveur [branche] [sections] > [fichier].list


C’est à dire l’adresse du dépôt complet (ou ligne apt) suivi de « > » et d’un nom de fichier portant l’extension .list.

Le programme d’installation ajoute alors l’adresse du dépôt dans le fichier spécifié dans le répertoire /etc/apt/sources.list.d où les programmes apt (apt-get/aptitude) vont chercher la liste des dépôt lors d’un update.


Ajout d’une clé GPG

Deux façon de faire :

  • Commencer la ligne par le mot-clé « key: » suivi de l’identifiant de la clé (cf.Ajouter la clé publique d’un dépôt (PPA))
  • Donner l’url d’un fichier gpg, la ligne doit donc commencer par « http:« , finir par « .gpg » et être une URL valide


Suppression d’un package / logiciel

Toutes les lignes commençant par « - » seront considérées comme une liste de nom de package que l’on veut supprimer du système


Installation d’un package / logiciel

Toutes les autres ligne du fichier seront considérés comme une liste de nom de package à installer.



Script d’installation

Voici le script capable de prendre en charge le fichier de configuration et de réaliser les installation paramétrées.

Je ne suis pas un expert en programmation bash, il y a donc de fortes chance pour que l’on puisse améliorer le code, je suis preneur de toutes remarques et contributions.


#! /bin/bash
 
################################################################################
# Ubuntu (> 9.10) post installation script
# by VoidAndAny
#
# based on cleanstart-packages.list.sh by silverwav - OpenPGP key:03187548 15 Apr 2009
#
# this script read a config file and :
#     add PPA with add-apt-repository
#    add other repositories (not PPA) by writing them in a .list file in /etc/apt/source.list.d
#    add GPG keys
#     install package using aptitude install
#     remove pacakge using aptitude remove
#
################################################################################
#
# Usage:
# installation.sh
# (reads a file called packages.list by default).
# or
# installation.sh <filename>
#
# Any line starting with a # is ignored as are Blank lines.
# Line beginning by "ppa:" followed by a are used to add PPA repository
# Line beginning by "deb http", containing ">" followed by a file name with ".list" extension are used to add repository in /etc/apt/sources.list.d/
# Line beginning by "key:" followed by a key id are used to add GPG key from keyserver.ubuntu.com
# Line beginning by "http:", ending by ".gpg" are used to download and add GPG key froman URL
# Other lines are package list
#
################################################################################
clear
echo "--------------------------------------------------------------------------------"
echo "                 (cleanstart) Script for installing packages (client)                 "
echo "--------------------------------------------------------------------------------"
 
# ensure script is run as root/sudo
if [ "$(id -u)" != "0" ]
then
 echo ""
 echo "Must execute the script as root user."
 echo "--------------------------------------------------------------------------------"
 exit 1
fi
 
# check the argument count
if [ $# -gt "1" ]
then
 echo ""
 echo "Only one file with package names allowed."
 echo "--------------------------------------------------------------------------------"
 exit 1
fi
 
################################################################################
#### Main
#### args: (1)
#### 1. [out] List of input package names
################################################################################
 
CONFIG_FILE=""
# package names to be installed
PACKAGE_NAME_LIST=""
 
# check if filename was supplied as comand line parameter
if [ $# -eq "1" ]
then
 CONFIG_FILE=$1
else
 CONFIG_FILE=packages.list
fi
 
PACKAGE_NAME_LIST=$(cat $CONFIG_FILE | grep -v -E "(^#)|(^ppa:)|(^deb http)|(^-)|(^key:)|(^http:.*\.gpg)" | awk -F'#' '{ print $1}')
REMOVE_PACKAGE_LIST=$(cat $CONFIG_FILE | grep -E "^-" | awk -F'#' '{ print $1}' | sed 's/^-//g')
PPA_NAME_LIST=$(cat $CONFIG_FILE | grep -E "^ppa:" | awk -F'#' '{ print $1}')
REPOSITORY_KEY_LIST=$(cat $CONFIG_FILE | grep -E "^key:" | awk -F'#' '{ print $1}' | sed 's/^key://g')
GPG_URL_LIST=$(cat $CONFIG_FILE | grep -E "^http:.*\.gpg" | awk -F'#' '{ print $1}')
 
echo ""
echo "Installing PPA:" ${PPA_NAME_LIST}
echo "--------------------------------------------------------------------------------"
 
for i in $(echo  $PPA_NAME_LIST ); do
 add-apt-repository $i;
done
 
echo ""
echo "Installing other repositories (not PPA) "
echo "--------------------------------------------------------------------------------"
 
cat $CONFIG_FILE | grep -E "^deb http:.*>.*\.list" | awk -F'>' '{gsub(/[[:space:]]*/,"",$2) ; print $1 > "/etc/apt/sources.list.d/"$2 }'
 
echo ""
echo "Adding GPG key of other repositories (not PPA) "
echo "--------------------------------------------------------------------------------"
 
for i in $(echo $REPOSITORY_KEY_LIST ); do
 apt-key adv --keyserver keyserver.ubuntu.com --recv-key $i;
done
 
for i in $(echo $GPG_URL_LIST ); do
 wget -O - $i | sudo apt-key add - ;
done
 
echo ""
echo "Updating... "
echo "--------------------------------------------------------------------------------"
 
aptitude update
 
echo ""
echo "Installing packages:" ${PACKAGE_NAME_LIST}
echo "--------------------------------------------------------------------------------"
# ajouter le -y
aptitude install ${PACKAGE_NAME_LIST}
 
echo ""
echo "Uninstalling packages:" ${REMOVE_PACKAGE_LIST}
echo "--------------------------------------------------------------------------------"
 
aptitude remove ${REMOVE_PACKAGE_LIST}
 
echo ""
echo "Done"
echo "--------------------------------------------------------------------------------"


Utilisation

Pour utiliser ce script, il suffit de la lancer avec sudo en lui passant en paramètre le nom du fichier de configuration


Sources :

A Cleanstart for your new Ubuntu (Install Packages from a list)

Image par luvi sous CC BY-NC-ND

Lorsque l’on veut faire des tests de stabilité de son processeur (après l’avoir overclocké), ou si on veut faire des mesures de consommation électrique de son PC, on veut que le processeur tourne à 100%


On appelle cette opération CPU burning.


Pour réaliser ceci sous Ubuntu il existe un package nommé cpuburn, l’installation se fait donc via :

sudo aptitude install cpuburn


Cela installe 6 programmes (exécutables par un utilisateur standard, pas de sudo) :

  • burnP5 : pour les processeurs Intel Pentium w&w/o MMX
  • burnP6 : pour les processeurs Intel PentiumPro, PentiumII&III et Celeron
  • burnK6 : pour les processeurs AMD K6
  • burnK7 : pour les processeurs AMD Athlon/Duron
  • burnMMX : pour tester la mémoire cache des CPUs avec MMX
  • burnBX : pour tester la mémoire cache des CPUs Intel


Dans mon cas (Processeur Atom 330) j’ai utilisé burnP6.


Si votre processeur est multi-cœurs et/ou hyperthreadé, il faut lancer autant d’instance de cpuburn que de cœurs (4 dans mon cas)


On peut voir sur cette copie d’écran les 4 cœurs à 100% (et la température du processeur à 65°C, 5 minutes auparavant elle était a 40 °C)




Sources :

Image par thornypup sous BY-NC-ND

Dans l’article Téléchargement automatisé de séries avec Flexget, j’ai décrit l’installation et la configuration « de base » de flexget.

Mais il existe une autre configuration optionnelle mais bien pratique, celle consistant à recevoir un email dès que flexget télécharge un nouveau fichier torrent/épisode.


L’email reçu aura le format suivant :

Sujet :

[FlexGet] <nom du flux> : 2 new entries downloaded


Corps du mail :

Hi,
 
FlexGet has just downloaded 2 new entries for feed <nom du flux> :
 
- Serie A 5x21 (HDTV-LOL) [VTV] (<adresse du torrent>) => ~/downloads/torrentfiles (Serie.A.S05E21.HDTV.XviD-LOL.[VTV].torrent)
 
- Serie B S02E07 HDTV XviD-LOL (<adresse du torrent>) => ~/downloads/torrentfiles (Serie.B.S02E07.HDTV.XviD-LOL.torrent)


La configuration de l’email se fait très simplement en ajoutant/créant une section preset global :

presets:
  global:
    email:
      from: [adresse email expediteur]
      to:
        - [adresse email destinataire 1]
        - [adresse email destinataire 2]
      smtp_host: [serveur SMTP]


Cette configuration est la configuration minimal pour un serveur SMTP ne gérant pas d’authentification comme celui de Free.fr (cf. Utiliser le serveur SMTP de Free avec sSMTP)


Pour gmail il faudra :

presets:
  global:
    email:
      from: [user gmail]@gmail.com
      to:
        - [adresse email destinataire 1]
        - [adresse email destinataire 2]
      smtp_host: smtp.gmail.com
      smtp_port: 587
      smtp_login: true
      smtp_username: [user gmail]
      smtp_password: [mot de passe gmail]
      smtp_tls: true


Sources :

Wiki Flexget : http://flexget.com/wiki/Plugins/email

Images par Mzelle Biscotte sous CC BY-SA

<Avertissement>

Cet article démontre la faisabilité d’automatiser le téléchargement de séries et explique la mise en œuvre de Flexget.

Il n’est en aucune façon une incitation au téléchargement.

</Avertissement>


Cet article est la mise à jour de l’article Flexget : téléchargement automatique de torrents, il se propose de décrire l’installation et la configuration de flexget pour surveiller un flux RSS et y télécharger le fichier torrent associé à une/des séries paramétré(s).

Ce mécanisme associé avec un client torrent permettant la surveillance d’un répertoire pour le démarrage automatique des téléchargement, permet d’automatiser la récupération de série télé au fur et à mesure de leur diffusion.


Présentation de Flexget

Flexget se base sur divers  sources de données, le script traite cette source, filtre son contenu et produit une sortie.

Flexget est entièrement configurable via un fichier de configuration où l’on défini le/les plugins à utiliser pour la source, le traitement et la sortie

Pour exemple voici quelques plugins (liste complète des plugins flexget) :

  • Plugins sources : csv, html, rss, etc.
  • Plugins de filtre : serie, imdb, etc.
  • Plugins de sortie : dowload, deluge, email, etc.

Dans la cas du sujet de cet article, les plugins utilisés pour télécharger un fichier torrent seront :

rss, serie, download, email


Installation de Flexget

En version 0.9 l’installation se résumait à une simple décompression d’une archive zip, depuis la version 1.0, il est fournis un package egg qui contient le programme mais qui gère aussi les dépendances.


Pour prendre en charge les packages python egg, il faut que le programme easy_install soit installé pour cela :

sudo aptitude install python-setuptools


On télécharge la dernière version du fichier egg sur le site Flexget puis on l’installe :

sudo easy_install FlexGet-1.0r1197-py2.6.egg


On peut simplement tester que l’installation s’est correctement effectuée par :

flexget -V

Qui devrait donner la version installée :

FlexGet 1.0r1197


Configuration

Par défaut flexget charge sa configuration d’un fichier config.yml dans le répertoire .flexget du répertoire home de l’utilisateur l’exécutant.

Il est tout fait possible de réaliser cette configuration dans un autre fichier, mais dès lors il faudra indique le nom et chemin de ce fichier dans la ligne de commande.


Le fichier de configuration doit respecter le formalisme du langage YAML (lien Wikipédia), où la hiérarchisation des données se fait via des doubles espaces, en aucun façon un fichier yml doit avoir des tabulation.

(Pour faciliter l’édition de ce genre de fichier on pourra utiliser VIM avec le paramétrage indiqué ici Afficher les caractères invisibles dans VIM)


Lors du passage à la version 1.0 de Flexget, le format du fichier de configuration à été complétement revu.


Prenons un exemple simple :

feeds:
  Series_torrent:
    rss: [URL flux RSS]
    series:
      - Une belle Serie
      - Une autre serie
    download: ~/downloads/torrentfiles

La configuration doit contenir au moins un conteneur feed qui possède en son sein autant de flux (RSS ou autre) que voulu

Chaque flux est nommé via un texte libre (ici Serie_torrent) et contient la définition/configuration des plugins à utiliser par le flux.

Chaque flux utilise couramment 3 plugins :

  • 1 plugin source : rss pour lequel on indique l’adresse du flux RSS
  • 1 plugin filtre : serie, ce plugin analyse le contenu de la source (le flux RRS) et ne retient dans ce flux que les entrées dont le nom correspond à une des séries indiqués (ici « une belle serie » et « une autre serie »)
  • 1 plugin de sortie : download, ce plugin télécharge le fichier torrent associé avec les séries filtrés dans le répertoire indiqué


Le plugin serie, est très puissant :

  • Il gère le multiple format de nom que peut avoir une série : « Une belle Serie » ou « Une.belle.Serie » ou « une belle serie »
  • Il gère les repost d’un épisode, il compris si le nom change, ainsi si l’épisode « Une.belle.Serie.S01E10.LOL » à été téléchargé et que quelques heures plus tard, l’épisode est reposté par une autre team « Une.belle.Serie.S01E10.titre.de.l’episode.VQM » ce dernier ne sera pas re-téléchargé
  • Il gère les repost pour cause de proper/repack (c’est à dire qu’un épisode est re-posté car la première version avait un problème) en re-téléchargeant l’épisode
  • Il existe des options pour ne télécharger préférentiellement les épisode répondant à une qualité donné.

Voir les autres caractéristiques ici : http://flexget.com/wiki/Plugins/series


Autre exemple utilisant la notion de qualité de l’épisode :

feeds:
  Series_torrent:
    rss: [URL flux RSS]
    series:
      Series_qualite:
        - Une belle Serie
            timeframe: 3 hours
            quality: hdtv
        - Une autre Serie
            timeframe: 3 hours
            quality: hdtv
    download: ~/downloads/torrentfiles

La qualité est définie par le mot clé quality qui peut prendre les valeurs suivantes :

1080p, 1080, 720p, 720, hr, dvd, hdtv, pdtv, dsr, dsrip


Le mot-clé timeframe indique que lorsqu’un nouvel épisode est trouvé et que celui-ci ne satisfait pas aux critères de qualité, on ne le télécharge pas tout de suite mais on attend le temps spécifié afin de s’assurer qu’un nouveau post avec la qualité voulu arrive.


Il faut définir ces options pour chaque séries, à moins d’utiliser la notion de groupe :

feeds:
  Series_torrent:
    rss: [URL flux RSS]
    series:
      settings:
        Series_qualite:
          timeframe: 3 hours
          quality: hdtv
      Series_qualite:
        - Une belle Serie
        - Une autre Serie
    download: ~/downloads/torrentfiles

On utilise ici les options de qualités et la notion de groupe.

Less options timeframe et quality sont définies dans un groupe que l’on peut nommer comme on le souhaite (ici Serie_qualite) l, lui-même défini dans un « noeud » settings

Le nom du groupe est ensuite réutilisé pour définir les séries sur lesquelles les option doivent s’appliquer.


On peut ainsi définir plusieurs groupes pour des séries différentes :

feeds:
  Series_torrent:
    rss: [URL flux RSS]
    series:
      settings:
        Series_hdtv:
          timeframe: 3 hours
          quality: hdtv
        Series_1080:
          timeframe: 3 hours
          quality: 1080p
      Series_1080:
        - Une belle Serie
      Series_hdtv:
        - Une autre serie
    download: ~/downloads/torrentfiles


Nous avons ici 2 groupes pour 2 niveaux de qualité (hdtv et 1080p), la série « Une belle serie » sera donc téléchargée en favorisant le niveau de qualité 1080p tandis que la série « une autre serie » elle sera téléchargée en qualité hdtv.


Toujours plus compliqué, si on dispose de plusieurs sources de données il faudra redéfinir les groupes dans chacun des flux, sauf si on utilise la notion de preset :

presets:
  tv:
    download: ~/downloads/torrentfiles
    series:
      settings:
        Serie_hdtv:
          timeframe: 4 hours
          quality: hdtv
      Serie_hdtv:
        - Dexter
        - Dollhouse
 
feeds:
  Series_flux_1:
    rss: [URL du flux RSS n°1]
    preset: tv
 
  Series_flux_2:
    rss: [URL du flux RSS n°2]
    preset: tv


Test

Lorsque l’on a fait son fichier de configuration il faut le tester, pour cela il existe un mode test :

flexget -c [fichier YML] --test -v


L’option « -c » est facultative si vous avez fait votre configuration dans le fichier /.flexget/config.yml

L’option « -v » indique à flexget qu’il doit afficher le détail des opérations qu’il réalise (pratique pour comprendre son fonctionnement, ses choix, débugger sa configuration)


La sortie de cette commande sera du type :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2010-03-15 22:08 INFO     manager                       Test mode,  creating a copy from database ...
2010-03-15 22:08 INFO     manager                       Test database  created
2010-03-15 22:08 INFO     feed          Series_torrent  Produced 20  entries.
...
+ filter   seen         Rejected Serie A S06E17 PROPER  HDTV XviD-2HD
+ filter   seen         Rejected Serie B S06E07 HDTV XviD-FQM
...
+ filter   series       Rejected Serie A  S06E17 HDTV  XviD-XII (already downloaded)
+ filter   series       Rejected Serie B S06E01 HDTV XviD-P0W4 (already  downloaded)
...
+ filter   series       Accepted Serie A  S06E20 HDTV XviD-2HD (quality met, timeframe unnecessary)
+ filter   series       Accepted Serie A  S06E21 HDTV XviD-2HD (quality met, timeframe unnecessary)
...
2010-03-15 22:08 INFO     feed          Series_torrent  Accepted: 0  (Rejected: 18 Undecided: 2 Failed: 0)
...
2010-03-15 22:08 INFO     download      Series_torrent  Would download: Serie A S06E20 HDTV XviD-2HD
2010-03-15 22:08 INFO     download      Series_torrent  Would download: Serie A S06E21 HDTV XviD-2HD
...
2010-03-15 22:08 INFO     download      Series_torrent  Would write: Serie A S06E20 HDTV XviD-2HD
2010-03-15 22:08 INFO     download      Series_torrent  Would write: Serie A S06E21 HDTV XviD-2HD
...
+ undecided              Serie C S04E19 HDTV XviD-LOL
+ undecided              Serie C S04E18 HDTV XviD-LOL
...
2010-03-15 22:08 INFO     manager                       Removed test  database


Ligne 1-2 : on voit que l’on est en test puisque flexget créé une base de données de test (dans il stock les séries déjà téléchargés, entre autre)

Ligne  3 : le nombre d’entrées (épisodes) détecté dans le flux

Ligne 5-6 : les entrées rejetées car déjà présente lors du lancement de flexget précédent

Ligne 8-9 : les entrées rejetés car l’épisode à déjà été téléchargé (repost d’un épisode par une autre team)

Lignes 11-12 : les entrées acceptées

Lignes 14 : récapitulatif des traitements

Lignes 16-17, 19-20 : Les 2 entrées acceptées, sont téléchargées et le fichiers est écrit sur le disque

Lignes 22-23 : des entrées/épisodes trouvés dans le flux RSS, mais la série correspondante n’est pas configurée

Linge 25 : purge de la base de test.


Exécution et plannification

Le moyen le plus efficace d’utiliser flexget est de le plannifier via Cron :

flexget -c [fichier YML] --cron


L’option « –cron » indique que l’on est dans le cas d’une utilisation en batch, ce qui pour conséquence de désactiver l’affichage des logs sur la sortie standard, de les rediriger vers un fichier de log et de diminuer la verbosité de ces dernières.


Attention lors de la plannification cron à mettre un interval d’exécution du job en adéquation avec le paramétrage du timeframe.

Si votre tache s’exécute toutes les 3 heures mais que votre timeframe est de 4 heures

Exécution 1 : un épisode ne satisfait pas le niveau de qualité, flexget doit attendre 4 heure avant de s’en satisfaire.

L’exécution  suivante (n°2) arrive 3h après, si l’épisode de bonne qualité n’existe toujours pas, flexget ne fait rien.

L’exécution  suivante (n°3) arrive 3h après, soit 6h après la première, c’est uniquement à ce moment que flexget téléchargera l’épisode de qualité moindre.

En soi ce n’est pas grave mais le paramétrage n’est pas optimal, on préférera mettre un timeframe de 3 ou 6h.


Utilisation conjointe avec un client Torrent

Flexget se contente de télécharger le fichier torrent, mais il ne télécharge par la vidéo, pour ce faire il suffit d’avoir un client torrent prenant en charge la surveillance d’un répertoire.

En paramétrant le client torrent pour qu’il surveille le répertoire dans lequel flexget télécharge les fichier torrent, le téléchargement démarre de façon automatique.


Dans Deluge ce paramétrage se fait en renseignant le paramètre « autoadd .torrent files from » :

Cf. Configuration du client torrent Deluge via l’interface WebUI


Remarque :

Flexget dispose d’un plugin deluge permettant de piloter directement Deluge de façon assez puissante, je n’ai pas encore pris le temps de m’y pencher..


Méthode certifiée Hadopi proof

L’utilisation des protocoles P2P, dont fait partie Bittorrent n’est pas du tout Hadopi compatible (mais bon Hadopi n’est pas encore arrivé), par contre les newsgroups eux le sont (pour l’instant)

Et fort heureusement Flexget dispose d’un plugin sabnzbd qui peut piloter SABnzbd, un client de newsgroup.

Bref à garder sous coude pour dans quelques mois (peut être)



Sources :

Le wiki de flexget : http://flexget.com/wiki

Sample FlexGet config.yml file for Deluge

Automating Home Entertainment • Niamu by Brendon Walsh

How to Configure FlexGet to Automatically Download TV Torrents on Ubuntu 10.04 Lucid Lynx Server – 1000umbrellas.com

Image par nrkbeta


Un serveur de fichier est simplement un PC mettant à disposition un espace de stockage via le réseau.


On accède donc le(s) disque(s) dur de ce PC via un partage réseau.


Plusieurs solution sont possibles pour réaliser ce partage réseau.

Les 2 solutions les plus courantes au sein d’un réseau local (LAN) sont:

  • SAMBA : le protocole SAMBA est l’implémentation libre du protocole SMB qu’utilisent les OS Microsoft pour partager des ressources (fichiers ou imprimantes) sur un réseau
  • NFS : est un protocole de partage réseau natif des OS Unix


NFS est disponible pour Windows via l’installation d’un client NFS : Microsoft Services for UNIX (SFU) alors que SAMBA est nativement supporté par Windows.

NFS est réputé pour être plus performant que SAMBA, même lors de communication entre machine Linux-Windows


N’ayant que des machines Linux, j’ai choisi NFS.


Installation du serveur NFS

Rien de plus simple :

sudo aptitude install nfs-kernel-server


Configuration

Reste plus qu’a indiquer au serveur NFS les ressources qui doivent être partagés, cela se fait via le fichier /etc/exports avec la syntaxe suivante :

[dossier partagé] [client autorisé][(options)]
  • dossier partagé : le dossier du serveur qui dot être accessible
  • client autorisé : adresse IP/nom de machine autorisé à accéder à ce partage
  • options : voici celles que j’utilise
    • rw : accès en écriture (lecture seule par défaut)
    • async/sync : le serveur NFS doit il afficher les changements avant que ceux ci soient réellement effectué sur le disque (async) ou non (sync – option par défaut)


Un fois cette configuration effectué il suffira de démarrer/redémarrer le serveur NFS :

sudo /etc/init.d/nfs-kernel-server restart



Accès au répertoire partagé côté client

Temporaire

On peut monter le partage réseau à la demande via la commande mount :

mount -t nfs [serveur]:[dossier partagé] [point de montage local]
  • serveur : nom adresse ou adresse IP du serveur
  • dossier partagé : dossier partagé paramétré dans le fichier /etc/exports sur le serveur
  • point de montage local : dossier local dans lequel le contenu du partage serveur sera affiché


Permanent via fstab

On peut rendre ce montage permanent en ajoutant l’entrée correspondante dans le fichier fstab

[serveur]:[dossier partagé]   [point de montage local]    nfs   defaults    0  0


Si le serveur n’est pas toujours allumé lorsque le client démarre, il est conseillé de mettre l’option noauto  à la place de defaults, indiquant que ce montage ne doit pas être monté de façon automatique.

Il conviendra alors de faire un mount -a lorsque le serveur sera accessible et que l’on souhaite y accéder.


Permanent via AutoFS

Le montage permanent via fstab à certaines lacunes :

  • le serveur doit être disponible lors du boot du client ou le point de montage ne doit pas être activé automatiquement
  • Les montages sont permanent même si on ne les utilise pas
  • Il semblerait que ce soi consommateur de ressource si on a beaucoup de montage NFS.

AutoFS pallie à ces problèmes en ne montant les ressources qu’a la demande.


Installation :

sudo aptitude install autofs


Configuration :

On modifie tout d’abord le fichier /etc/auto.master pour faire le lien entre le point de montage local et un fichier de configuration spécifique :

[point de montage local] [fichier de configuration] --ghost,--timeout=300


Le fichier de configuration sera localisé dans /etc et commencera par auto.

Il est d’usage ensuite d’indiquer le protocole utilisé (ici nfs, mais autofs peut monter d’autre protocole)

L’option ghost indique qu’il faut afficher le répertoire même si le montage n’est aps actif et le timeout se passe de commentaire.


Dans mon cas je monte le contenu d’un partage nommé multimedia sur le serveur dans Musique et Vidéos en fonction du type du contenu j’ai donc :

/home/[mon user]/Vidéos/sweetBox    /etc/auto.nfs.video --ghost,--timeout=300
/home/[mon user]/Musique/sweetBox    /etc/auto.nfs.music     --ghost,--timeout=300


Il faut ensuite créer le(s) fichier(s) défini dans /etc/auto.master ainsi :

[nom du partage] -fstype=nfs[options]  [serveur]:[dossier partagé]


nom du partage : nom du sous-répertoire contenant le partage tel qu’il apparaitra dans le répertoire spécifié dans l’entrée /etc/auto.master correspondante

options : on peut mentionner rw pour monter le partage en lecture/écriture (dans mes partages et tous les exemples trouvés sur le net on peut trouver l’option intr, dont j’avoue ne pas voir compris à quoi elle sert http://pwet.fr/man/linux/formats/nfs)


Voici mes fichiers :

/etc/auto.nfs.music

Musique      -fstype=nfs,rw,intr    [IP sweetBox]:/mnt/raid/multimedia/Musiques

/etc/auto.nfs.video

Animations      -fstype=nfs,rw,intr    [IP sweetBox]:/mnt/raid/multimedia/Animation
Films      -fstype=nfs,rw,intr    [IP sweetBox]:/data/multimedia/Films
Séries      -fstype=nfs,rw,intr    [IP sweetBox]:/data/multimedia/Series


Pour que les montages soient pris en compte il faut ensuite redémarrer le service autofs :

sudo service autofs restart


Ce qui a pour conséquence de « créer » les réperoires suivant le /home de mon utilisateur :

  • Vidéos/sweetBox/Animation
  • Vidéos/sweetBox/Films
  • Vidéos/sweetBox/Séries
  • Musique/sweetBox/Musique


Cas des liens symboliques

Prenons un exemple réel, celui de mon PC multimédia, j’ai sur ce PC un répertoire /data/multimedia, contenant mes films et ma musique organisés en sous-répertoires (cf. ci-dessous).

2 de ces sous-répertoires (Animation et Musique) sont plus sensibles (contrairement aux autres cela m’embêterait d’en perdre le contenu), ils sont donc en réalité localisés sur un volume RAID1 et un lien symbolique est fait dans le répertoire multimedia :

  • /data/multimedia/Animation –> /mnt/raid/multimedia/Animation
  • /data/multimedia/Documentaires
  • /data/multimedia/Films
  • /data/multimedia/Musique–> /mnt/raid/multimedia/Musique
  • /data/multimedia/Series


Le but est d’exposer l’ensemble de ces répertoires via NFS, la première idée est d’ajouter le répertoire multimedia, comme ceci :

/data/multimedia 192.168.1.0/24(rw,sync)


Le problème est que dans le cas d’un accès NFS les liens symboliques sont interprétés côté client, lorsque vous double cliquez sur le sous-répertoire Animation, Nautilus cherche à accéder au répertoire /mnt/raid/multimedia/Animation sur le PC client (ou vous êtes) et non pas sur le serveur…


Le solution trouvé pour mon cas est donc de créer un export NFS pour chacun des sous-répertoire de multimedia ainsi :

/data/multimedia/NonTries 192.168.1.0/24(rw,async,no_subtree_check)
/data/multimedia/Films 192.168.1.0/24(rw,async,no_subtree_check)
/data/multimedia/Series 192.168.1.0/24(rw,async,no_subtree_check)
/data/multimedia/Documentaires 192.168.1.0/24(rw,async,no_subtree_check)
/mnt/raid/multimedia/Animation 192.168.1.0/24(rw,async,no_subtree_check)
/mnt/raid/multimedia/Musiques 192.168.1.0/24(rw,async,no_subtree_check)


Cas des partages sur plusieurs disques durs/partitions

Ce paragraphe est rédigé de tête, n’ayant plus cette configuration, je ne peux pas vérifier le bien fondé des indications fournies ici, mais elle peuvent être un point de départ pour trouver la solution.


Autre cas qui peut faire perdre pas mal de temps et qui m’est arrivé, prenons une structure comme celle-ci sur le serveur de fichier :

Sur la partition 1 du disque sda, nous avons le point de montage /

Nous avons créé un répertoire /data/multimedia/Films contenant comme son nom l’indique des films.

On souhaite ensuite stocker de la musique dans un répertoire /data/multimedia/Musique

Mais comme sda1 est bientôt plein le répertoire Musique est le point de montage vers une autre partition (éventuellement d’un autre disque dur)

On a donc :

  • /data/multimedia/Films sur sda1
  • /data/multimedia/Musique sur sdb1


Si on veut exporter le répertoire multimedia via NFS, on créera une entrée comme celle-ci dans /etc/exports :

/data/multimedia 192.168.1.0/24(rw,sync)


Côté client si on monte ce partage dans un répertoire /home/[mon_user]/multimedia, on y verra bien les 2 répertoires Films et Musique mais ce dernier est vide


Cela est dû au fait que l’on est sur un filesystem différent dans le cas de Musique et donc NFS par défaut n’autorise pas l’accès au répertoire.


La solution consiste à utiliser l’option nohide et à exporter explicitement 1 à 1 les répertoires sur des filesystem différents :

/data/multimedia [adresse IP client](rw,sync,nohide)
/data/multimedia/Musique [adresse IP client](rw,sync,nohide)


Vous remarquerez au passage qu’avec cette option il n’est plus possible de définir des clients multiples (avec un masque de sous-réseau comme c’était le cas avant)



Sources :

nfs – Documentation Ubuntu Francophone

http://www.troubleshooters.com/linux/nfs.htm : tableau complet sur les options de montage

Fichiers de configuration de clients NFS

NFS: Overview and Gotchas

Chapter 20: NFS – Network File System

NFS security (Managing NFS and NIS, 2nd Edition)

[SOLVED] exporting several directories by a single nfs mount point – Ubuntu Forums


http://www.linux-consulting.com/Amd_AutoFS/autofs-5.html

http://doc.ubuntu-fr.org/autofs#nfs

http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/s1-nfs-client-config.html

http://www.greenfly.org/tips/autofs.html


image par Andy Field (Hubmedia) sous CC BY-BC-SA