Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for November, 2010

Niveau :      
Résumé : pam_exec

Vous souvenez-vous de PAM (Pluggable Authentication Modules) ? En plus des nombreux modules déjà présentés, on trouve pam_exec qui permet d'exécuter une commande arbitraire. A partir de là on peut faire pas mal de choses, comme par exemple une notification à chaque session ouverte par un utilisateur (connexion ssh, su, sudo, etc.).


Notification de connexion

Nous allons créer une règle utilisant le module pam_exec pour exécuter un script de notification à l'ouverture d'une nouvelle session.


Script de notification

D'après le manuel de pam_exec, les informations PAM sont passées au script à l'aide des variables d'environnement : PAM_RHOST, PAM_RUSER, PAM_SERVICE, PAM_TTY, PAM_USER et PAM_TYPE. Concevons donc un script simple qui :

  • ne s'intéresse qu'au cas de l'ouverture d'une nouvelle session, soit le type PAM open_session
  • récupère les informations et les envoie par mail à l'administrateur

continue reading...

Niveau :      
Résumé : xvkbd

Les tablettes et les smartphone ont le vent en poupe. Ces petites choses sont uniquement tactiles, elles n'ont pas de clavier physique. Si vous vous amusez à mettre une linux dessus, vous devrez utiliser un serveur ssh pour taper des commandes.

Bon supposons un cas bien plus courant: vous avez perdu votre clavier ... Ce genre de cas est prévu !

L'outil xvkbd vous permet de faire un clavier virtuel. Peu esthétique, mais bien pratique. Pour le lancer :

$ xvkbd

Wahoo trop fort. Maintenant les détails. On veut un clavier en français, donc avant de le lancer :

$ echo "xvkbd.customization:-french" | xrdb

Avec xrdb vient fichier de configuration : ~/.Xdefaults, pensez à y mettre votre entrée xvkbd pour ne pas avoir à taper la commande à chaque fois.

Ensuite on veut éviter de cliquer tout le temps sur une touche sans le vouloir, cliquez sur la touche en bas a droite du clavier "xvkbd", puis "Property..." et là vous avez l'option "automatic clic" qui vous permet de dire au bout de combien de temps d'immobilité du pointeur le clic se fait tout seul. Mettez le à off ou à une valeur assez longue.

En pratique les conf de xvkbd vont dans le fichier ~/.xvkbd

Et voilà ! clavier

Et enfin si comme moi vous avez un window manager qui change le focus avec le mouvement de la souris (ce qui n'est pas une bonne idée si vous n'avez que la souris), vous devrez cliquer sur "Focus", puis sur la fenêtre avant de commencer à l'utiliser, pour être sûr que les touches vont bien à la bonne fenêtre.

Et si vous n'avez pas de clavier, lancez-le automatiquement au démarrage, ce serait dommage d'avoir besoin d'un clavier pour le lancer.

Niveau :      
Résumé : tmpreaper ; find

Tout le monde a de vieux fichiers qui trainent. Mais rare sont ceux qui savent lesquels supprimer.

Je vous propose une solution simple : tmpreaper, du package éponyme.

Comme son nom l'indique cette commande a été inventée pour vider /tmp régulièrement. C'est assez pratique sur un serveur qui n'est quasiment jamais rebooté ou une machine dont le /tmp est persistent.

Son principe de base est de lister les fichier n'ayant pas été accédés depuis longtemps. Attention, son installation le met directement en place sur /tmp sous forme de cron.

Pouvez-vous dire mieux ?

Mieux !

Vous pouvez l'utiliser pour votre home pour savoir ce qui ne sert à rien et nettoyer un peu ce bazar qui commence à dater. En effet, par défaut ce qui est testé c'est la date d'accès, pas la date du fichier lui-même. Un fichier peut être très vieux et très utilisé. Par contre les fichiers qui n'ont jamais été ouvert sont probablement inutiles.

Pour avoir la liste des vieux fichiers :

$ /usr/sbin/tmpreaper --test 365d ~

Puis enlevez le --test pour vraiment supprimer.

Mais pourquoi utiliser tmpreaper ? On a déjà find, c'est juste un peu moins rigolo :

$ find ~ -atime +365

Et pour supprimer :

$ find ~ -atime +365 -exec rm {} \;

Niveau :      
Résumé :

Vous avez des VM linux ? Si le système de vm dispose d'un outil de compactage de disque (vmware en a un), vous pouvez l'aider depuis votre VM :

# avec un accès au device non monté :
$ apt-get install zerofree
$ zerofree /dev/sda1

Vous avez perdu votre clé publique ssh mais vous avez encore votre clé privée en backup ? Pas de panique :

$ ssh-keygen -y -f .ssh/id_rsa

Si vous avez debian et qu'un paquet met un fichier quelque part alors que vous voudriez le voir ailleurs (pour le remplacer par exemple) :

$ dpkg-divert --add --rename --divert /checmin/fichier.xxx /chemin/fichier

Debian ou ubuntu ? amusez-vous :

$ aptitude moo; a="v"; for i in {1..6}; do aptitude -$a moo; a="v$a"; done

PS : Pour ceux qui me suivent depuis un planet, n'oubliez pas que certains post n'y sont pas publiés car pas dans la ligne éditoriale d'un planet, par exemple le dernier http://linux-attitude.fr/post/perle....

PPS : Et pour ceux qui ont oublié, je publie ce genre d'astuces rapides sur twitter tous les matins @peckpeck

Niveau :      
Résumé : "Perl moderne"

La vie des huîtres selon saint Larry (soûlant ...).

Aujourd'hui il est sujet d'un livre. Un livre dont le titre est "Perl moderne", tout simplement. Je ne vais pas vous le cacher, si je vous en parle c'est que je connais un des auteurs. Remarquez que c'est peut-être l'occasion de commencer une section recommandations de bouquins.

L'acheter ou pas ?

Alors pourquoi acheter ce livre ? Pour les arguments commerciaux, je vous laisse aller voir le site de l'éditeur. Pour les vraies raisons ...

  • parce qu'il fait 450 pages et que c'est beaucoup
  • parce qu'il est assez petit pour tenir dans la poche (enfin avec un bon treillis)
  • parce que comme moi vous avez appris Perl en lisant du code Perl
  • parce que vous ne savez pas qu'il est possible d'écrire du Perl orienté objet

Mais pourquoi je vous déconseillerais d'acheter ce livre ?

  • parce que vous aimez Python et que vous voulez considérer les espaces de fin de ligne comme des erreurs de code
  • parce que pour vous le seul code lisible c'est du code C façon K&R
  • parce que vous êtes Larry Wall et que vous n'allez rien apprendre

Le contenu du livre

La première partie ravira les débutants en Perl qui apprendront que contrairement à la croyance populaire "$^£¨%*" n'est pas un code Perl valide. Remarquez que même moi, qui sais que "Perl '-sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj'" est une ligne de commande valide en Perl, j'y ai appris des choses.

Hé oui, le Perl a bien évolué depuis la première version 5. La partie 2 m'a d'ailleurs appris qu'il y avait une nouvelle façon d'écrire de l'objet en Perl. Moi bêtement je pensais que Perl avait fait les choses super bien en n'ajoutant qu'un mot clé "bless" pour devenir orienté objet. Mais en fait non, il paraît qu'il en faut un peu plus pour entrer proprement dans le paradigme objet. Qu'a cela ne tienne, on utilisera Moose, l'héritage, des setter, des getter et du typage.

Ça vous parait compliqué ? Mais pas du tout le livre contient des exemples simple pour chaque mot clé présenté.

Pour résumer cette partie, ce que j'ai découvert de plus utile ce sont les trigger sur propriétés d'un objets et les méthodes pour intercepter d'autres méthodes.

La troisième partie assez classique avec ce qu'on peut trouver dans les bibliothèque Perl pour traiter les données. Elle parle entre autre de l'infernal problème des dates ...

Passons à un chapitre bien plus passionnant pour qui s'y connaît déjà un peu en Perl, POE. Intuitivement j'aurais dit quelque chose comme "Perl orienté évènement", perdu, il s'agit de "Perl Object Environment". En fait c'est un système puissant de gestion d'évènements et d'états. Le but étant de passer à une programmation événementielle. C'est très pratique lorsque vous codez un serveur, d'autant qu'il existe déjà un grand nombre de méthodes existantes qui vous éviteront de réinventer la roue (la POE::Wheel pour ceux qui connaissent).

Enfin la dernière partie traite d'une chose qui sera bien plus utile à ceux qui ne connaissent pas encore bien Perl, le framework web de Perl. Il permet de parser du HTML, de lire des formulaires, de jouer des séquence complètes de requêtes pour vous faire passer pour un navigateur auprès de votre serveur préféré (pensez-y vous qui devez remplir toutes les semaines le même formulaire dans votre boite ...).

Pour conclure, je dirais que c'est un bon bouquin. Dommage qu'il n'y ait pas un petit site depuis lequel on puisse faire copier/coller des exemples du livre. Heureusement, ils sont assez courts en général. Il y a maintenant un site dédié à ce livre et les exemple y sont disponibles au téléchargement

Allez, soyez gentil, achetez-le, si vous en prenez 2000, je vous promet de faire un article par jour !