Archive

Archives de l'auteur

Un plugin Collectd/Exec pour la 8!

Pour la postérité de mes graphs collectd, je souhaitais avoir un graph CPU de mon serveur. Collectd prend en charge la liblmsensors2 correctement, mais très mal la version 3 packagée dans Debian. Par conséquent je me suis mis en tête de faire un petit script via le plugin Exec qui parsera la sortie de la commande sensors (le tout paramétré comme il faut avant).

En avant pour le script :

#!/bin/bash
INTERVAL=60
HOST="galadriel.morot.fr"
while true
do
        TEMP=`sensors |grep -i temp1 | awk ' { print $2; } ' | cut -c 2,3`
        echo "PUTVAL $HOST/exec-temperature/gauge-temperature interval=$INTERVAL N:$TEMP"
        sleep $INTERVAL
done

Le plus important dans tout ça, c’est le PUTVAL mais heureusement, la doc est notre amie. Donc en gros voila le format :

PUTVAL <nom du serveur>/<instance>/<type de données attendu> avec interval, le délai entre deux mises à jour.

Et donc il suffit de rajouter temperature value:GAUGE:-273.15:U au fichier /usr/lib/collectd/types.db

Y’a plus qu’à indiquer tout ça au fichier collectd.conf :

LoadPlugin exec
<Plugin exec>
        Exec "bin:bin" "/etc/collectd/cpu.sh"
</Plugin>

Si t’es un as du M-w / C-y ça donne ça :

Et voilà le travail! Vous pouvez maintenant retrouver la douce chaleur de la télévision.

Categories: GNU/Linux, Planet Libre Tags:

On regarde quoi à la télé ce soir?

Depuis que la freeboite supporte l’UPNP j’utilisais un logiciel de media center sympa, le problème c’est que pour XBMC il faut X. Et c’est la que des petits gars biens ont sorti un logiciel nommé uShare qui permet d’exporter en upnp mes films depuis un partage NFS. Le mieux dans tout ça? C’est simple à utiliser et des paquets existent pour openwrt et dans les bonnes distributions.

À utiliser c’est simple comme un petit :

ushare -c /media/data/divx/ -i wlan0 -n zaphod
Categories: GNU/Linux, OpenWRT, Planet Libre Tags:

Script du jour, télécharger les pièces jointes d’une boite mail

Voila un petit script que j’ai codé pour dépanner quelqu’un qui s’est dit après deux ans que finalement il aurait dû enregistrer ses photos reçues par mail. Comme je le trouve assez intéressant pour le publier, le voici :

#!/usr/bin/env perl

use strict;

use Net::IMAP::Simple;
use MIME::Parser;

my $server = "serveur";
my $user = "user";
my $pass = "pass";

my $imap = new Net::IMAP::Simple( $server );
$imap->login($user, $pass);

my $nbmsg = $imap->select( 'INBOX' );

foreach my $msg ( 1..$nbmsg ) {
    my $lines = $imap->get( $msg );
    my $fh = $imap->getfh( $msg );
    my $parser = new MIME::Parser;
    $parser->output_under("/tmp");
    my $entity = $parser->parse($fh);
    close $fh;
}
$imap->quit();

Il reste plus qu’un petit find /tmp -name *.jpg -exec mv {} \; bien placé pour récupérer les fichier JPEG par exemple.

Categories: Code, Planet Libre Tags:

My laptop is rich !

Noël étant l’occasion de se faire plaisir je me suis acheté un nouvel ordinateur portable. Je cherchais un portable 13″, avec un lecteur optique, dont le processeur gérait la virtualisation et le tout pour moins de 650 €. Au final, le seul qui remplissait ces conditions était un HP 4310s avec le CPU T6670 chez avenueducommerce. Mais bon, il est bô! La première étape a été de supprimer le système d’exploitation nouvelle version 7 livré avec pour y coller une Debian. Pour résumer, à part le lecteur d’empreintes (dont j’attends toujours une réponse par mail du fabricant pour qu’il se bouge à libérer les spécs) tout marche !!!

Petit lspci d’abord :

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 3 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 03)
00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M LPC Interface Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)
02:00.0 Network controller: Intel Corporation WiFi Link 1000 Series
85:00.0 Ethernet controller: Marvell Technology Group Ltd. Device 436c (rev 10)

Récapitulatif

Bluetooth

Composant Fonctionnement
CPU VT OK avec le module kvm-intel
Ethernet OK
Audio OK mais penser à ajouter au fichier /etc/modprobe.d/alsa-base.conf : options snd-hda-intel model=laptop
Vidéo OK : GLX et Kernel Mode Settings
Wifi OK avec un kernel > 2.6.30
Modem non testé
Lecteur de cartes SD OK
Lecteurs d’empreintes Non
OK
Webcam OK
Suspend to ram OK
Suspend to disk OK
Categories: GNU/Linux Tags:

RAID Réseau multi-maîtres avec DRBD 0.8

DRBD est un système permettant en quelques sortes de faire du RAID de partitions au travers du réseau en vue de faire un système en haute disponibilité. J’avais déjà joué avec DRBD 0.7 pour faire des serveurs Web et Mails redondants en maitre-esclave, mais dans ce cas, un seul serveur est réellement actif. Depuis la 0.8, il est possible d’avoir une configuration multi-maîtres dans le but de pouvoir faire en plus de l’équilibrage de charge. Voyons comment ça se passe sous Debian!

Tout d’abord, voici la configuration des deux serveurs servant aux tests :
srv1 : Debian lenny avec comme IP 192.168.69.16 et /dev/hda3 comme partition utilisée pour DRBD.
srv2 : Debian lenny avec comme IP 192.168.69.15 et /dev/hda3 comme partition utilisée pour DRBD.

On installe donc ce qu’il faut sur les deux serveurs :

# apt-get install drbd8-utils drbd8-modules-`uname -r`

Ensuite, on créé un fichier /etc/drbd.conf identique sur les deux serveurs. Dans ce fichier, on spécifique qu’on autorise deux serveurs maitres, le protocole de réplication (le protocole C étant celui ayant la plus haute fiabilité), et les hôtes et partitions DRBD réunis autour d’une ressource drbd.

global {
  usage-count yes;
}

common {
  protocol C;
  startup {
    degr-wfc-timeout 120;
    become-primary-on both;
  }
  net {
    allow-two-primaries;
    after-sb-0pri discard-zero-changes;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
  }
}

resource r0 {
  on srv1 {
    device    /dev/drbd0;
    disk      /dev/hda3;
    address   192.168.69.16:7789;
    meta-disk internal;
  }
  on srv2 {
    device    /dev/drbd0;
    disk      /dev/hda3;
    address   192.168.69.15:7789;
    meta-disk internal;
  }
}
 

Reste plus qu’à démarrer les services sur chaque serveur et créer la ressource drbd nommée r0 dans le fichier de configuration :

srv1:/etc# drbdadm create-md r0
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

Pour le côté didactique, voici les opérations réalisées par les script d’init :

srv1:/etc# drbdadm attach r0
srv1:/etc# drbdadm syncer r0
srv1:/etc# drbdadm syncer r0

Ensuite, on lance la synchro initiale, et la vous pouvez aller prendre un café. On voit l’état de la synchronisation dans le fichier /proc/drbd :

srv1:/etc# drbdadm -- --overwrite-data-of-peer primary r0
srv1:/etc# cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33
 0: cs:SyncSource st:Primary/Primary ds:UpToDate/Inconsistent C r---
    ns:5188 nr:0 dw:0 dr:5216 al:0 bm:0 lo:0 pe:1 ua:1 ap:0
        [>....................] sync'ed:  0.2% (5556/5561)M
        finish: 3:57:04 speed: 368 (344) K/sec
        resync: used:0/61 hits:324 misses:1 starving:0 dirty:0 changed:1
        act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0

Au passage, si l’un des noeuds démarre en slave, on peut le passer en maitre via un petit

srv2:/etc# drbdadm  primary r0

.

Il ne reste plus qu’à ajouter un système de fichiers clusturisé type OCFS2 ou GFS2 par dessus car qui dit multi-maitres dit également système permettant de gérer les verrous entre les noeuds sinon dites au revoir à vos données…

Categories: GNU/Linux, Planet Libre Tags:

Carte 3G Huwaei E160 sous Linux

Les cartes Huwaei E160 sont actuellement livrées en pack avec les Livebox Orange. Et la où c’est beau, c’est qu’elles fonctionnent de base sous Linux avec le module noyau option et les paquets ppp et wvdial installés.

dmesg :

usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
option 1-10:1.0: GSM modem (1-port) converter detected
usb 1-10: GSM modem (1-port) converter now attached to ttyUSB0
option 1-10:1.1: GSM modem (1-port) converter detected
usb 1-10: GSM modem (1-port) converter now attached to ttyUSB1
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems 

lsusb :

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem
Bus 001 Device 002: ID 058f:6390 Alcor Micro Corp. USB 2.0-IDE bridge
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Ces clés USB ont cependant un inconvénients, elles fonctionnent soit en mode disque de stockage usb soit en mode modem. Ce qui est transparent sous Windows car un autorun lance l’installation du driver et masque la fonction stockage une fois le dit driver installé. Sous Linux et avec un noyau inférieur au 2.6.26 il faut passer par le module usb_modeswitch disponible à l’adresse http://www.draisberghof.de/usb_modeswitch/. Ce pilote est également disponible dans les dépôts AUR sous Archlinux et s’installe donc simplement via yaourt -S usb_modeswitch.

Note : il peut être nécessaire de déverrouiller la carte via son pre PIN, pour cela, comgt est parfait :

bash-4.0# comgt -d /dev/ttyUSB0

Enter PIN number: 0000
Waiting for Registration..(120 sec max)...
Registered on Home network: "Orange F",2
Signal Quality: 14,99

Reste plus qu’à créer le fichier /etc/wvdial.conf nécessaire, puis on peut lancer la connexion via la commande wvdial :

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = 3G Orange
Phone = *99#
ISDN = 0
Username = orange.ie
Password = orange.ie
Modem = /dev/ttyUSB0
Baud = 460800
Categories: GNU/Linux, Planet Libre Tags:

Bloquer MSN avec Squid

MSN se connecte par défaut sur le port 1863 et s’il est bloqué par un firewall, il se rabat sur le port 80. Il faut donc passer par un filtrage de contenu pour ce débarasser de cette saleté. Pour cela, il faut ajouter dans le squid.conf il filtrage sur le domaine ainsi que sur le type MIME :

acl msn_domains dstdomain messenger.msn.com gateway.messenger.hotmail.com
acl msn_mime_type req_mime_type application/x-msn-messenger
http_access deny msn_domains
http_access deny msn_mime_type

Et le tour est joué, bye bye à un protocole fermé de plus!

Categories: Planet Libre, Squid Tags:

Première application en PyQt4

Voici une première application minimaliste qui ne fait qu’affichier une fenêtre :

# -*- coding: utf-8 -*- 

#!/usr/bin/python

## Import des modules Python
import sys
from PyQt4 import QtGui

## Toute application Qt graphique doit instancier une QApplication
app = QtGui.QApplication(sys.argv)

## le widget QWidget est le widget de base pour tous les autres widget de l'interface graphique
## un widget sans parent constitue une fenêtre
widget = QtGui.QWidget()
widget.resize(400, 300)
widget.setWindowTitle(u'Première application PyQt4')
## le widget est affiché
widget.show()

## Enfin on rentre dans la boucle d'évènement principale
## sys.exit permet d'informer le système de la manière dont s'est terminée l'application
## le exec_ a un underscore simplement car exec est un mot clé réservé en Python
sys.exit(app.exec_())
Categories: Code, Planet Libre Tags:

Postfix : utiliser un relai SMTP authentifié

Personnellement j’aime bien que l’envoi des mails se fasse via un SMTP local qui se charge d’acheminer le message à la place de KMail. Par contre je passe par le relai SMTP Authentifié de mon hébergeur et non celui de mon FAI ce qui nécessite de mettre en place une authentification SASL.

Donc dans un premier temps, il faut installer Postfix, sous une Archlinux cela donne :

pacman -Sy postfix

Ensuite dans le /etc/postfix/main.cf, on définit le relai SMTP et le fichier stockant le mot de passe SASL pour la connexion avec le relai SMTP :

daemon_directory = /usr/lib/postfix
myhostname = zaphod.morot.fr
mydomain = morot.fr
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relay_domain = $mydestination
relayhost = [mail.morot.fr]
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
sender_canonical_maps = hash:/etc/postfix/canonical

Le sender_canonical_maps est la pour me permettre d’envoyer des mails en tant que root.

Donc ensuite dans le fichier /etc/postfix/sasl_passwd, on rajoute le compte mail avec le mot de passe associé autorisé à se connecter en SASL au serveur distant :

mail.morot.fr          utilisateur:motdepasse

Et enfin dans le fichier /etc/postfix/canonical sur lequel il faudra appliquer la commande postmap, je définis ma réécriture d’adresse pour root :

root          adresse@email.com
Categories: Postfix Tags:

Serveur SSH sous Archlinux

Par défaut sous ArchLinux, une fois SSHD installé, la connexion est recalée par une erreur de ce type :

ssh_exchange_identification: Connection closed by remote host

L’erreur vient du fait que la stratégie par défaut du fichier /etc/hosts.deny est de tout refuser via la ligne suivante qu’il faut commenter ou ajuster selon ses paramètres de sécurité, de façon brutale celà donne :

ALL: ALL: DENY
Categories: Archlinux Tags: