Utiliser le daemon Bittorrent

Voyons un peu comment utiliser le daemon Bittorrent avec le fichier exécutable (Python) btlaunchmany, en ligne de commande donc, toujours sur une Debian Etch. Nous supposerons que le programme Bittorrent est installé (s’il ne l’est pas : # apt-get install bittorrent).

Préparation du terrain

Pour commencer nous allons créer deux répertoires : active et attente qui respectivement serviront comme dépôt des fichiers .torrent actuellement en téléchargement et des fichiers en attente d’être téléchargés. Le principe étant que lorsque l’on bascule toto.torrent dans active, le script l’ajoute automatiquement et le téléchargement débute. Pratique.
J’ai crée les miens à la racine de mon home.

Exécution de btlaunchmany

Nous pouvons maintenant lancer btlaunchmany (vous pouvez le trouver sur votre système avec l’extension python btlaunchmany.py parfois) qui va scruter le répertoire active et commencer le téléchargement des torrents présents :

$ ./btlaunchmany ~/torrents/active/ > torrent.log &

Pour éviter que le process ne s’arrête lorsque vous vous déconnectez, il suffit de doubler l’exécution en tâche de fond, comme ceci :

$ (./btlaunchmany ~/torrents/active/ > torrent.log 2>&1 &) &

Le deuxième &permet de dire au système que l’on désire que ce programme soit exécuté en tout temps, même lorsque l’utilisateur n’est plus connecté. Ceci en quelque sorte déconnecte le process du terminal en cours, le reléguant au process parent INIT. Le 2>&1 redirige la sortie d’erreur vers la sortie standard qui est redirigée vers le fichier torrent.log.
ps x vous montrera que le process btlaunchmany tourne bien.

Un petit tail torrent.log vous permet de voir l’évolution de vos téléchargements en cours, l’option -f continue d’afficher le contenu du fichier torrent.log tant qu’il s’accroît.

$ tail torrent.log
/home/fabien/p2p/active/a-torrent-currently-downloading.avi:
Spd: 0  B/s:146  B/s Tot: 56.8  M:18.5  M [4:41:33 38%]
All: Spd: 0  B/s:146  B/s Tot: 56.8  M:18.5  M
/home/fabien/p2p/active/a-torrent-currently-downloading.avi:
Spd: 0  B/s:139  B/s Tot: 56.8  M:18.5  M [4:41:33 38%]
All: Spd: 0  B/s:139  B/s Tot: 56.8  M:18.5  M
/home/fabien/p2p/active/a-torrent-currently-downloading.avi:
Spd: 0  B/s:132  B/s Tot: 56.8  M:18.5  M [4:41:33 38%]
All: Spd: 0  B/s:132  B/s Tot: 56.8  M:18.5  M

script de gestion du daemon

Voici le petit script que j’utilise pour gérer le daemon plus facilement :

#!/bin/sh
# Gestion du daemon btlaunchmany
# fabien a. [fabien@feub.net]
# avril 2007
PIDFILE="/home/fabien/p2p/btlaunchmany.pid"
DIR_P2P="/home/fabien/p2p"
DIR_ACTIVE="$DIR_P2P/active"
MAX_UPLOAD_RATE=0
torrents_start() {
echo "DEMARRAGE de btlaunchmany..."
(btlaunchmany $DIR_ACTIVE --max_upload_rate
$MAX_UPLOAD_RATE > $DIR_P2P/torrent.log 2>&1
& echo $! $PIDFILE) &
}
torrents_stop() {
echo "ARRET de btlaunchmany..."
if [ -r $PIDFILE ]; then
PID=`cat $PIDFILE`
kill $PID 2> /dev/null
fi
}
torrents_view() {
echo "TELECHARGEMENTS en cours :"
tail $DIR_P2P/torrent.log
}
case "$1" in
start)
torrents_start
;;
stop)
torrents_stop
;;
restart)
torrents_stop
torrents_start
;;
force-reload)
torrents_stop
torrents_start
;;
view)
torrents_view
;;
*)
echo "Usage: $0 {start|stop|restart|
force-reload|view}"
;;
esac

Note : Les anti-slash () indiquent juste que ce qui suit est sur la même ligne, ne pas le taper.

Truc con, la télécommande ‘secteur’ à 20€

Vendredi, je discutais de choses et d’autres avec un collègue de boulot et il me demande si j’ai une télécommande universelle et si je m’y connais – au passage je m’y connais pas – car il en cherche une et il aimerait bien en trouver une qui prenne en charge ces petites télécommandes de prises de courant qui fonctionnent par voie hertzienne et non par infrarouge. Et la discussion a continué sur ce sujet des prises secteur télécommandables, il en est assez friand et je dois dire que ça a titillé ma curiosité.
Je suis moi même assez fan de lampes, je dois en avoir cinq d’allumées en permanence dans mon living, préférant cette ambiance à une unique ampoule au plafond. Lorsque je rentre du boulot, il est vrai que ce serait cool qu’au lieu de faire le tour de la pièce en se contorsionnant pour atteindre les interrupteurs des lampes à droite et à gauche, je n’avais qu’à appuyer sur un bouton! Maintenant c’est fait.

Je suis passé à mon supermarché fétiche et je me suis dégotté la chose pour 18€ et des poussières. C’est une toute simple télécommande avec 3 prises télécommandables, donc au minimum, cela permet d’activer 3 appareils.

L’autre avantage étant l’économie d’énergie. Bon nombre d’appareils sont désormais démunis de bouton marche-arrêt, en particulier les TV ou les amplis qui restent en mode veille sans pouvoir les arrêter totalement, à moins de les débrancher. J’ai mis une de ces prises sur mon ensemble home cinéma et donc j’éteinds tout (TV, ampli, CanalSat, lecteur DVD et une lampe) en partant de chez moi d’une pression sur la télécommande.

Parfois de toutes petites choses facilitent bien la vie et à moindre coût.

Faire revivre une vieille webcam sous Etch

Au fond de mes placards, je possède une vieille Webcam 3 de Creative, et je me suis dis, pourquoi ne pas la faire revivre comme ma machine Debian tourne tout le temps, cela pourrait être un moyen pour – par exemple – monitorer Ashitaka. Trève de plaisanterie sacrebleu!
Voici la courte procédure pour faire fonctionner une Webcam 3 sous Etch grâce au programme w3cam.

Commencer par installer le paquet :

# apt-get install w3cam

Une fois le programme installé, vous vous retrouvez avec 2 fichiers w3cam.cgi et w3cam.cgi.scf sous /usr/bin/cgi-bin. Si vous utilisez Apache dans sa configuration de base, tout est bien, si vous avez déplacé le répertoire des cgi, copiez ces fichiers au bon endroit :

# cp -R /usr/bin/cgi-bin/* /votre/destination/cgi-bin/

Assurez-vous que le propriétaire du daemon Apache puisse accéder au périphérique vidéo, en l’occurence :

# chmod 666 /dev/video0

Pour la configuration, il faut se reporter au fichier w3cam.cgi.scf, qui dans sa forme par défaut semble fonctionner pour bon nombre de caméras, mais pas la Webcam 3. En effet, cette webcam utilise une palette de couleurs yuv420p qu’il faut explicitement indiquer dans le fichier de configuration. Voici le mien pour exemple :

# SCFF/sh
# Apparence de la page HTML
background=#000000
foreground=#999999
# Mettre protected à 1 ne prendra pas en compte les champs du formulaire
protected=0
# Chemin vers périphérique video
device="/dev/video0"
# Taille de l'image
width=640
height=480
# Palette de couleur.
# 1 : jpeg en couleurs
# 0 : noir et blanc
# yuv420p : palette yuv420p en particulier pour les Webcam3 de Creative
color=yuv420p
# Temps entre deux images
refresh="0.1"
# Norme.
# 0 : PAL
# 1 : NTSC
# 2 : SECAM
# -1 : pour les Webcam3 de Creative
norm="-1"
# Entrée.
# 0 : TV
# 1 : Composite1
# 2 : Composite2
# 3 : S-Video
# -1 : pour les Webcam3 de Creative
input="-1"
# Format.
# 1 : PPM
# 2 : JPEG
# 3 : PNG
format="2"
# Qualité jpeg (1-100)
quality="80"
# Mode.
# 0 : plain
# 1 : gui (pour avoir un control sur w3cam)
mode="1"

Notez les variables norm="-1" et input="-1", nécessaires pour la Webcam 3 également, mais je ne vous expliquerai pas pourquoi.

C’est fini, vous pouvez désormais visualiser l’image de votre webcam à cette adresse :Pour accéder à la page diffusant la vidéo il suffit maintenant de taper

http://localhost/cgi-bin/w3cam.cgi (en local)
http://votre-nom-de-domaine/cgi-bin/w3cam.cgi (depuis internet)

Activer le cryptage WPA sous freeBSD

Ce weekend, j’ai remonté une vieille box à base de Duron 800MHz sous freeBSD. C’est une machine qui traîne dans ma chambre à coucher, un peu loin du routeur, mais équipée d’une carte wifi à base de chip Ralink. Quelle chance, cette puce est plutôt bien gérée par Linux et freeBSD.
Bien que gérée, j’ai eu du mal à la faire fonctionner avec un chiffrage WPA, trouvant très peu de doc à ce sujet sur internet. Finalement, j’ai trouvé un petit tutoriel qui a fonctionné directement, ô joie.
Cette procédure ne va pas s’attarder sur l’installation et la reconnaissance de votre carte, mais sur sa configuration avec un cryptage WPA à clé partagée (WPA-PSK).

Configurer l’interface

Votre carte en place et reconnue, celle-ci n’est bien entendu pas configurée, vous devriez avoir quelque chose comme ça en faisant un ifconfig ral0 :

# ifconfig ral0
ral0: flags=8806 mtu 1500
ether xx:xx:xx:xx:xx:xx
media: IEEE 802.11 Wireless Ethernet autoselect
status: no carrier
ssid ""
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 0

La première chose est d’assigner une IP et un masque réseau à l’interface, toujours avec la commande ifconfig (dans cet exemple, j’utilise l’adresse IP 192.168.1.10 avec un masque 255.255.255.0, adaptez ces valeurs à vos besoins) :

ifconfig ral0 inet 192.168.1.10 netmask 255.255.255.0

On vérifie que la configuration a été prise en compte :

# ifconfig ral0
ral0: flags=8806 mtu 1500
inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:14:51:7a:56:d7
media: IEEE 802.11 Wireless Ethernet autoselect
status: no carrier
ssid ""
channel 10 authmode OPEN powersavemode OFF powersavesleep 100
wepmode OFF weptxkey 0

Ajout d’un chiffrage WPA (802.11i)

Maintenant que nous avons une interface réseau configurée pour notre réseau, il ne reste plus qu’à chiffrer l’accès grâce au protocole WPA-PSK (pre-shared key) qui ne nécessite pas de serveur d’authentification Radius.

Créer et éditer un fichier wpa_supplicant.conf sous /etc contenant ces lignes :

ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="mon_ssid"
key_mgmt=WPA-PSK
psk="ma_passphrase"
}

Avant d’activer ce cryptage, il faut charger quelques modules relatif au cryptage wifi. Suivant votre installation de freeBSD, peut-être ces modules sont-ils chargés, sinon entrez cette commande :

# kldload -v wlan_acl wlan_wep wlan_ccmp wlan_tkip

Ensuite, il suffit de lancer la commande suivante pour activer le cryptage :

# wpa_supplicant -B -i ral0 -c /etc/wpa_supplicant.conf [-d]

L’option -B active le cryptage comme « daemon », -i sélectionne l’interface réseau et -c est le chemin vers le fichier de configuration.
L’option -d est optionelle et permet juste d’afficher le mode de debuggage en cas de soucis.