Linuxman - juillet 1999


INDEX

Mois précédent

Mois suivant


15 7 1999
17 7 1999
18 7 1999
22 7 1999
30 7 1999

 15 7 1999

Mots Clés : procmail (présentation).

Retour
Hello les jeunes, bon je sais ça fait deux semaines, voire trois, que je me la joue taciturne (he he, maîtrise, he he :-). Sorry mais après une semaine mouvementée chez les lorrains, j'ai goûté un peu aux joies du soleil californien (pour le business, of course), j'ai pas eu accès à une babasse de la semaine (remarquez j'ai pas trop trop cherché quand même...).

Enfin, bon, aussitôt rentré, vite, j'essaie de compiler le 2.3.10... Ben j'y suis pas arrivé, j'ai pas creusé pour l'erreur, mais j'ai un truc à la compil qui me plait moyen...

À part cela rien de bien nouveau, j'ai fait un peu de Perl, mais pas assez, je vous en causerai un peu. J'ai enfin réussi à faire marcher mon .procmailrc à cause d'une connerie de droits zarbi il marchait pas, mais là ça a l'air d'aller mieux. procmail c'est un trieur de mail, il faut créer un .procmailrc dans son $HOME où on met des règles basées sur des expressions régulière (ça marche avec un egrep en interne) et des actions, qui peuvent être plus que simplement des séparations par dossiers, ça peut aussi faire tout ce que vous voulez puisque ça accepte des commandes shells.

Bon, désolé mais je m'attarde pas parce que demain matin j'ai une rando qui m'attend alors, hein, c'est pas le moment de babasser toute la nuit...

haut de page

 17 7 1999

Mots Clés : jdk-1.2, jdk-1.2.

Rien faire ça prend un temps dingue
C'est vraiment incroyable comme on peut être non productif quand même, moi ça me sidère... Enfin bon, faut faire avec... Alors hier crevé je n'ai pu que passivement télécharger le JDK 1.2 prerelease 2 glic2.1, à part quelques petites histoires dans le .java_wrapper (il ne trouvait pas les exécutables ni les libs parce que les commandes dirname qui étaient sensées donner le répertoire racine du JDK ne semblaient pas marcher, il a fallu que je rajoute une ligne APPHOME=`dirname $APPHOME`, parce que les 2 présentes ne suffisaient pas) tout marche bien, enfin, tout marche pour les quelques programmes java que j'ai lancés.

Alors je devais vous causer un peu (un peu hein, pas de folies) de procmail qui, comme je vous l'avais dit, est un trieur de mail, jusque là rien de formidable, Netscape fait ça aussi, sauf que ceux qui regardent leur mail avec Netscape sont des BLAIREAUX... Non je plaisante, chacun est libre d'utiliser son maileur favori dans la mesure où cela ne gène personne (mais je dois bien avouer que quand on partage la même machine et que quelqu'un lance un Navigator de 20 Meg pour lire son mail, ÇA me gène !). Bon passons et ne nous lançons pas dans des querelles stériles... Alors procmail est un trieur de mail, il est lancé par défaut par sendmail sous la RedHat, je ne sais plus si smail de la Debian le lance aussi mais j'imagine (ma machine Debian fait dodo et je veux pas la réveiller). Donc, à moins que vous n'ayez eu l'audace de m! ! ! odifier  votre /etc/sendmail.cf il doit être opérationnel.

Pfff...Je suis trop naze, j'ai encore fait du vélo aujourd'hui, et avec la rando d'hier je crois que ça m'a achevé...

haut de page

 18 7 1999

Mots Clés : procmail.

Tiens j'ai vu Starship Troopers hier, je sais pas si c'est parce que j'etais fatigué ou quoi, mais j'ai trouvé ça pas mal, remarquez, il ne m'en faut pas beaucoup vous savez : un peu d'action, quelques pointes de valeurs humaines, une jolie nana, et le tour est joué, je suis content :-)

Bon, revenons à nos moutons, quand même, donc procmail sert à trier les mails en se basant sur le fichier .procmailrc de votre home directory. Je ne vais pas détailler tout ce que l'on peut faire avec procmail, pour la bonne raison que je ne le sais pas, et il y a des man très bien fait à ce sujet (man procmail, procmailrc, procmailex et procmailsc). Alors prenons par exemple le fichier .procmailrc suivant :
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/mail      #you'd better make sure it exists
DEFAULT=$HOME/mbox      #completely optional
LOGFILE=$MAILDIR/from   #recommended

# Le fichier .procmail commence part quelques variables d'environnement.

:0 c
! warly@bigfoot.com

# Toutes les règles commencent par :0
# Celle là forwarde tous les mails à l'adresse spécifiée.
# C'est le c qui permet de faire ça.

:0:
* ^[Ff]rom.*(paul|raoul|george|martin|gus)
/dev/null

# Les conditions commencent par *. Elles consistent en une expression
# régulière passée à un egrep en interne. Par défaut uniquement  
# l'entête des mails et traitée, mais on peut aussi chercher
# dans le corps en mettant :0 HB: (H pour header, B pour body).
#
# Ici tous les mails venant de Paul, Raoul, George, Martin ou Gus
# sont mis à la poubelle. Les deuxièmes : après le 0 signifient
# qu'un fichier de lock est créé pour éviter les accès simultanés
# au fichier.

:0:
* ^[Tt]o.*warly
personnal

# Les mails qui me sont adressés personnellement sont mis dans personnal

:0:
* ^[Ff]rom:.*boulot.com
# On peut avoir des blocs, ceux ci sont délimités par des accolades.
{
    :0 B:
    * miranda
    | cat >> `date +%m%Y`/boulot
# Tout mail causant de miranda m'interesse :-) et, si comme moi vous
# classez vos mails de manière chronologique, ces mails sont ajoutés  
# au dossier boulot dans le repertoire du mois courant (de la forme
# 061999, 071999...)
    :0 HB:
    *   !^From:.*(sophie|ida)
    * 2000^0   ^From:.*(sr@boulot)
    * 2000^0   ^Subject:.*éunion
    *  300^0   ^Subject:.*Re:
    * 4000^.75 linux
    * -100^1   ^>
    *  400^.9  :-\)
    * -500^0   ^Subject:.*(windows|microsoft|word|excel)
    * -10^2   > 2000
    * -1000^0  ^Subject:.*(help|aide|secours|sos)
    | cat >> `date +%m%Y`/boulot

# Bon alors là ça se complique un chouia. Tout d'abord je spécifie avec !
# que je ne veux pas les mails de Sophie et Ida. Ensuite il est possible
# de mettre un poids aux differentes conditions et le mail ne sera  
# conservé que si le total est positif. Un poids se présente sous la forme
# x^y. A la première occurence de la condition, x est ajouté au total, x^y à
# la deuxième, (x^y)^y a la troisième, etc...
# Ici, je rajoute 2000 si le mail viens de sr ou s'il cause de réunion, et 300  
# si c'est une réponse. Si ça cause linux, ça m'interesse. Par contre j'aime pas
# trop quand il y a trop de parties d'anciens mails dedans.
# J'aime bien les smileys, mais pas quand ça cause crosoft. Ensuite j'aime pas  
# trop les mails long, donc je défavorise les mails un peu plus tous les 2000 octets,
# soit -10 pour 2000, -100 pour -4000, -10000 pour 6000, etc...Et puis aider les gens  
# ça va 5 min mais comme ils lisent jamais les manuels c'est un peu gavant.
# Et comme tout à l'heure je mets ça dans le dossier boulot du mois.
}

Bon, vous avez déjà là une bonne panoplie de ce que l'on peut faire avec procmail, et puis ça se construit à mesure un .procmailrc, au début on met juste deux trois trucs, et puis après on a des idées... Bon allez, bon dimanche, bonne bourre et bonne semaine...

haut de page

 22 7 1999

Mots Clés : Galère.

M'énerve ça
$*##!$ de #~%*$¨ de #2[|$£^@ !!! J'avais écrit tout un truc hier (le 21) et je l'ai paumé, je sais plus où je l'ai mis, quel blaireau, marre... Gavant, c'est trop les boules quand on a déjà écrit un truc, on n'a qu'une envie, c'est de tout plaquer et de partir dans la montagne pleurer toutes les larmes de son corps et frapper les marmottes violemment avec des gros troncs d'arbres... ARRRGGGG !!! ÇA M'ÉNERVE !!!!

haut de page

Mots Clés : awk.

J'avais commencé à vous causer de awk, avec une blague bidon qui commençait comme ça :  
Aho (Alfred V.), Weinberger (Peter J.) et Kernighan (Brian W.) sont copains et se disent : 'tain les gars zavez vu si on mets nos trois initiales bout à bout ça fait AWK, c'est cool trouvez pas, c'est le nom d'un langage du futur !. Ils avaient raison les bougres, d'autant que ce langage du futur, ben c'est eux qui l'on fait... C'était en 77, date ou je n'étais qu'un morveux qui ne savait qu'à peine marcher, et encore, je m'avance (à quel age on commnence à marcher, j'en ai aucune idée ?).

Donc voilà, awk était né. Depuis une nouvelle version est sortie en 85, avec régulièrement des petites modifications j'imagine. Sur la plupart des distribs linux c'est Gawk, le awk de GNU, qui est fourgué.

awk c'est du même accabi que sed, d'ailleurs si l'un est là, l'autre n'est pas bien loin... C'est principalement pour du traitement des fichiers ASCII (American Standard Code for Information Interchange, histoire de vous la péter un peu, norme définissant 128 caractères codés sur 7 bits. Les 128 autres qui forment les jeux de caractères 8 bits dépendent un peu, d'où le cacabouilla dans les mails quand l'un met des accents encodés dans un jeu de caractères différent de celui qui reçoit...). awk est surtout utilisé dans les < one line program >, programmes qui tiennent en une ligne et que l'on trouve souvent au milieu d'une ligne de commandes shell.

haut de page

Mots Clés : Matrix, Matrix.

Ha ouais, j'avais aussi causé de Matrix (m'énerve, m'énerve d'avoir perdu ce truc, blaireau fini que je suis), que j'étais enfin allé le voir. Je sais il était temps mais que voulez-vous, c'est la vie... Et par la même occasion j'ai vu la bande annonce pour StarWars, que je n'ai pas trouvé géniale. J'avais l'impression que c'était un ramassis de tous les effets spéciaux du film et que l'histoire était un peu mise de côté. Remarquez ce n'est pas totalement surprenant parce que c'est vrai que le film se la pète un peu avec tous ces effets spéciaux et ne se concentre pas assez, à mon goût, sur la psychologie des personnages et l'histoire, c'est sympa de voir plein de jolis vaisseau et tout et tout, mais c'est pas ça qui fait un grand film... Enfin bon passons, je vous causais de Matrix, donc... Ben je sais pas si en vieillissant on devient plus critiqu! ! e ou quo i, mais, même si le film est bien, c'est clair, il manque quand même quelque chose pour qu'il soit vraiment super bien. Je sais pas trop quoi, peut-être un peu plus de réalisme, ou des personnages un peu plus vrais, je sais pas... Néo, par exemple, il est sympa, mais ça aurait été bien de le connaître un peu plus avant qu'il sauve le monde, ou je sais pas quoi, lui donner un peu plus de caractère... Enfin bon... Mais c'est vrai que l'histoire, malgré quelques incohérences, tient bien la route, et puis il sauve le monde alors c'est un brave gars. Mais peut-être est ce que j'attends trop à ce qu'un film se passe comme je le voudrais, et pas comme il est en réalité...

Mots Clés : awk (one line programs).

Voilà, j'ai a peu près rétabli ce que j'avais paumé (blaireau, blaireau, blaireau. Savez vous qu'en patois de ma grand mère blaireau se dit < tessou > ? Vous le saviez pas, hein, hehe, et vous avez déjà entendu gueuler un tessou ? Ben il parait que ça fout sérieusement les jetons, sisi). Bon alors awk marche un peu comme avec sed, vous voyez, ça prend des lignes en entrée, et, généralement, ça balance aussi des trucs en sortie, histoire de ne pas avoir perdu son temps...

Alors on va se la jouer simple au début avec deux trois exemples sympathiques :
ls -l | awk '{print $3}'
Bon, pas de quoi pavoiser, ça sort juste le troisième champ d'un vulgaire ls -l. Ce qu'il faut savoir c'est que par défaut chaque ligne d'entrée est découpée avec comme séparateur les espaces, et tout cela est mis dans les variables $1, $2, $3, etc... $0 lui contient l'ensemble de la phrase.
ls -l | awk '{ if ($5 > 1000) print}'
Un peu plus élaboré, n'affiche que les lignes dont le champ taille (le cinquième d'un ls -l) est plus grand que 1000.
ls -l | awk '{ x += $5 ; if ($5 > 1000) print } ; END { print Total : x }'
Ici c'est la taille totale des fichiers de plus de 1000 octets qui est calculée puis affichée. la forme générale d'une ligne de commande awk est motif action. END est un motif spécial qui est exécuté après que toutes les entrées aient été traitées. De même BEGIN est un motif indiquant que l'action doit être exécutée avant tout traitements des entrées. Par exemple :

warly@woolm warly$ ls -l | awk 'BEGIN {print coucou je suis le script qui dit coucou} ; { x += $5 ; if ($5 > 1000) print } ; END { print Total : x }'
coucou je suis le script qui dit coucou
drwx------   5 warly    500          1024 May 19 04:18 Desktop
drwxr-xr-x   3 warly    warly        1024 May 23 11:35 GNUstep
drwx------   2 warly    500          1024 Feb 17 23:17 Mail
drwxr-xr-x  21 warly    warly        1024 May 24 13:55 Office
drwx------   2 warly    warly        1024 Apr 10 21:19 autosave
drwxr-xr-x   4 warly    users        3072 Jul 14 18:35 download
drwx------  10 warly    users        1024 Jul 22 12:20 files
drwxr-xr-x   3 warly    users        1024 Dec 25  1998 lg
drwxr-xr-x   7 warly    users        1024 Feb 28 11:30 local
drwx------  12 warly    users        2048 Jul 22 19:43 mail
-rw-rw-r--   1 warly    warly      174797 Jul 22 19:42 mbox
drwx------   2 warly    500          1024 Dec 28  1998 nsmail
drwxr-xr-x  12 warly    users        1024 May  7 19:59 public_html
drwx------   2 warly    users        1024 Jun 21 18:05 sauv
drwx------  11 warly    users        2048 Jul 18 04:26 tmp
drwxr-xr-x  13 warly    users        2048 Dec 25  1998 warly
Total : 196836

Tiens un autre truc que je ne vous ai pas dit, on peut aussi bien sûr faire des scripts awk comme avec n'importe quel interpréteur, avec un truc du genre :
#!/bin/awk -f
En début de fichier. Mais bon, c'est juste au cas où...
Bon allez, doucement avec l'HTML il m'a dit le docteur, alors j'arrête là...

haut de page

 30 7 1999

Mots Clés : binfmt_misc.

Flemme ??
Hum, hum, j'avoue, euh, je me laisse un peu aller ces derniers temps. Mais pas trop, hein, enfin, j'avoue quand même que j'ai deux trois parties de Playstation sur la conscience mais bon, quoi, ça développe les réflexes, enfin, bon, c'est ce qu'il faut se dire...

Ça doit être la Lune je pense, j'y ai longtemps réfléchis et je ne vois que ça : c'est la Lune. Mais que voulez-vous que je fasse contre la Lune, hein ? Ben rien, tiens, justement, donc voilà, je peux rien faire...

À part ça c'est l'été, il se passe pas trop trop de trucs, plutôt calme comme période. Alors je vais en profiter pour juste vous parler d'un petit truc qui peut servir et rendre la vie un peu plus facile de temps en temps. C'est juste qu'on peut enregistrer des formats binaires dans le noyau pour pouvoir les exécuter directement. Par exemple, disons que j'en ai trop marre, grave de grave, de toujours taper java truc bidule ou perl ou python ou dos ou n'importe quoi. Alors l'astuce consiste simplement à enregistrer, par exemple, les .class, où suivant une séquences de « nombres magiques » en début de fichiers (c'est une suite de valeurs hexadécimales, généralement en début du fichier, qui permettent d'identifier un format de fichiers binaires) aupres du système pour qu'il exécute ensuite l'interpréteur adéquat.

Commençons par un truc simple, histoire de voir, par exemple les scripts Perl ; on a déjà vu qu'on peut mettre #!/bin/perl en début de script pour que le shell utilise l'interpréteur qu'il faut. Bon et bien on peut aussi enregistrer par exemple les .pl pour être reconnu par le système (et non plus le shell) et être exécutés correctement. Tout se passe dans /proc/sys/fs/binfmt_misc. Pour enregistrer un format il faut taper une commande du genre echo :name:type:offset:magic:mask:interpreter: > register. Alors :

name est le nom qu'aura le nouveau fichier créé dans ce répertoire, ce n'est pas très important, par exemple «Perl»
type est le type de reconnaissance, avec E pour une reconnaissance par extension et M pour une reconnaissance basée sur les nombres magiques.
offset est le décalage à partir du début du fichier où doivent se trouver les nombres magiques, 0 par défaut quand on ne met rien.
magic contient la séquence du nombre magique ou bien l'extension, sans le point, par exemple pl.
mask masque de bits permettant de sélectionner seulement certains bits du fichier pour faire la correspondance avec le nombre magique. Un «et» logique est réalisé entre ce masque et les bits du fichier avant de les comparer au nombre magique. Par défaut ce masque est mis à 0xff pour toute la longueur du nombre magique.
interpreter est la commande qui est appelée pour exécuter le programme, avec tout le chemin.

Donc par exemple pour des scripts Perl reconnaissables via leur extension, je vais taper:

echo :Perl:E::pl::/usr/bin/perl: > register

J'ai omis le champ offset et mask qui ne sont pas nécessaires.

Maintenant pour les classes java c'est un brin plus compliqué. Bon déjà on peut se faire ça pour les applettes, en considérant qu'elles se trouvent dans les fichiers .html ça simplifie la vie. Donc il faut faire :

echo :Applet:E::html::/usr/local/lib/jdk1.2/bin/appletviewer: > register

Bon évidemment ça mettra un gentil warning si il n'y a pas d'applettes dans la page, mais rien de grave.

Bon alors pour les programmes java classiques, il faut s'aider d'un petit script pour éliminer le .class et faire que tout s'exécute dans le bon environnement, avec le bon nom de classe. Pour cela Colin J. Watson a fait un script bash et un programme c qui font cela très bien :

javawrapper : le script qu'il faut mettre dans le register de binfmt_misc
javaclassname.c : à compiler avec gcc -O2 -o javaclassname javaclassname.c. Utilisé par le script bash pour trouver le bon nom de classe.

Après avoir mis ces scripts dans votre $PATH en ayant au préalable vérifié le chemin du programme java à la fin du script, vous pouvez maintenant enregistrer les programmes java compilés avec la commande :

echo :Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper: > register

Et le tour est joué, maintenant plus qu'à taper le nom de la classe et ça roule ma poule (sans oublier de mettre le fichier en exécutable)... Bien sûr pour que ceci soit valable à chaque reboot, il vous faut mettre ces commandes dans un des scripts rc de démarrage. Tiens un autre truc sympa, si vous regardez le nombre magique des classes java, par exemple en faisant un cat Java dans /proc/sys/fs/binfmt_misc, vous obtenez :

enabled
interpreter /usr/local/bin/javawrapper
offset 0
magic cafebabe

C'est cool, le nombre magique ça fait « cafebabe » :-)

haut de page

Mois suivant

Valid HTML 4.0!

Warly Home Page   Generated 2000-07-02, 11h31   Mail
Copyright © 1999,2000 Florent Villard (warly@bigfoot.com)
This site was created with daily (tar.gz, rpm)