Re: Script bash, lecture fichier on the fly
Brice Méalier [EMAIL PROTECTED] writes: On Sat, Jul 09, 2005 at 07:54:28AM +0200, Jean-Damien Durand wrote : Tu peut recuperer les headers que tu veux en une seule fois, par example: headers=`egrep ^(To:|Subject:|From:)|tr _`|sort -t: -u|xargs echo MailPopup $headers|FvwmCommand -c (coup de bol: From, Subject et To sont dans le bon ordre alphabetique - le fait que tu changes les espaces en '_' aide - sinon ca serait un peu plus tordu a cause du echo apres). En esperant que ca marche pour toi... Merci de la réponse mais ça marche pas! J'ai donc décidé de sauver le mail dans un fichier temporaire et de travailler ce fichier: tmp_mail=/tmp/tmp_mail cat $tmp_mail to=`grep -v \-To $tmp_mail |grep -m 1 To:|tr _` subject=`grep -m 1 Subject: $tmp_mail |tr _` from=`grep -m 1 From: $tmp_mail |tr _` rm $tmp_mail fvwmfunction='MailPopup'\ $from\ $subject\ $to echo $fvwmfunction|FvwmCommand -c Merci Un script perl aurait été plus adapté, il t'éviterai de lire 3 fois le mail. L'entée standard peut être traitée ligne à ligne, pour chaque header tu peux donc alimenter la variable qui va bien, enfin tu peus t'arrêter de lire dès que toutes les variables sont renseignées. Léo.
Re: Script bash, lecture fichier on the fly
On Sun, Jul 10, 2005 at 01:56:35PM +0200, Leopold BAILLY wrote : Brice Méalier [EMAIL PROTECTED] writes: On Sat, Jul 09, 2005 at 07:54:28AM +0200, Jean-Damien Durand wrote : Tu peut recuperer les headers que tu veux en une seule fois, par example: headers=`egrep ^(To:|Subject:|From:)|tr _`|sort -t: -u|xargs echo MailPopup $headers|FvwmCommand -c (coup de bol: From, Subject et To sont dans le bon ordre alphabetique - le fait que tu changes les espaces en '_' aide - sinon ca serait un peu plus tordu a cause du echo apres). En esperant que ca marche pour toi... Merci de la réponse mais ça marche pas! J'ai donc décidé de sauver le mail dans un fichier temporaire et de travailler ce fichier: tmp_mail=/tmp/tmp_mail cat $tmp_mail to=`grep -v \-To $tmp_mail |grep -m 1 To:|tr _` subject=`grep -m 1 Subject: $tmp_mail |tr _` from=`grep -m 1 From: $tmp_mail |tr _` rm $tmp_mail fvwmfunction='MailPopup'\ $from\ $subject\ $to echo $fvwmfunction|FvwmCommand -c Merci Un script perl aurait été plus adapté, il t'éviterai de lire 3 fois le mail. L'entée standard peut être traitée ligne à ligne, pour chaque header tu peux donc alimenter la variable qui va bien, enfin tu peus t'arrêter de lire dès que toutes les variables sont renseignées. Ok pour le script perl mais je ne sais pas programmer en Perl! J'en ai un à disposition qui marche très bien mais j'essaie d'y mettre un test avant à savoir: tester que je suis bien sous Fvwm (sinon le script ne doit pas être exécuté). J'ai implémenté un petit truc: my $test=`ps ax|grep -c [f]vwm`; if ($test==0) { exit 0; } mais je me demande bien si c'est correct! si tu en as une idée, ça serait sympa de me le dire! Merci -- Brice Méalier [EMAIL PROTECTED] Linux user nb. 372699 Debian Sarge -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Script bash, lecture fichier on the fly
Brice Méalier a écrit : Bonjour pour programmer un mail popper sous fvwm m'indiquant le sujet, la provenance et la destination de mails entrant sur ma machine, je souhaite utiliser un script bash. Donc voici mon environnement: j'utilise des boites au format mbox stockées dans $HOME/mail/ j'utilise procmail en que MDA. Dans procmail, les mails sont triés selon les headers et pour mon petit mail popper, j'utilise la règle suivante: :0 c * |newMail.sh tout nouveau mail est donc copié et passé dans un script bash. Ce script doit simplement extraire les headers From, Subject et To et les envoyer dans des variables qui me serviront un peu plus tard pour mon popper. Ce que j'ai fait pour le moment: #!/bin/bash FVWM=`ps -ef|grep '[f]vwm -s'` # make sure we are running fvwm if [ -z $FVWM ] then exit 0 fi to=`grep -v \-To|grep -m 1 To:|tr _` subject=`grep -m 1 Subject:|tr _` from=`grep -m 1 From:|tr _` fvwmfunction='MailPopup'\ $from\ $subject\ $to echo $fvwmfunction|FvwmCommand -c le problème est que les données à lire sont volatiles et il n'est capable de m'extraire seulement le premier champ spécifié (ici le champ To, si je change l'ordre, il me lit le premier de la série). Donc 2 solutions (il me semble): lancer les 3 grep en même tempset enregistrer leurs sorties respectives (je crois pas ça possible...) ou enregistrer l'entrée du script dans un fichier et travailler avec ce fichier puis y faire un echo fichier en attendant le prochain mail. Je suis débutant en bash et je bloque par manque de connaissances là! je sais pas comment faire! Auriez-vous une idée? Cordialement Brice man formail -- Le signe oui est d'un homme qui s'endort ; au contraire, le réveil secoue la tête et dit non. -+- Émile Chartier, dit Alain (1868-1951) -+- -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Script bash, lecture fichier on the fly
On Sun, Jul 10, 2005 at 03:51:30PM +0200, Laurent CARON wrote : Brice Méalier a écrit : Bonjour pour programmer un mail popper sous fvwm m'indiquant le sujet, la provenance et la destination de mails entrant sur ma machine, je souhaite utiliser un script bash. Donc voici mon environnement: j'utilise des boites au format mbox stockées dans $HOME/mail/ j'utilise procmail en que MDA. Dans procmail, les mails sont triés selon les headers et pour mon petit mail popper, j'utilise la règle suivante: :0 c * |newMail.sh tout nouveau mail est donc copié et passé dans un script bash. Ce script doit simplement extraire les headers From, Subject et To et les envoyer dans des variables qui me serviront un peu plus tard pour mon popper. Ce que j'ai fait pour le moment: #!/bin/bash FVWM=`ps -ef|grep '[f]vwm -s'` # make sure we are running fvwm if [ -z $FVWM ] then exit 0 fi to=`grep -v \-To|grep -m 1 To:|tr _` subject=`grep -m 1 Subject:|tr _` from=`grep -m 1 From:|tr _` fvwmfunction='MailPopup'\ $from\ $subject\ $to echo $fvwmfunction|FvwmCommand -c le problème est que les données à lire sont volatiles et il n'est capable de m'extraire seulement le premier champ spécifié (ici le champ To, si je change l'ordre, il me lit le premier de la série). Donc 2 solutions (il me semble): lancer les 3 grep en même tempset enregistrer leurs sorties respectives (je crois pas ça possible...) ou enregistrer l'entrée du script dans un fichier et travailler avec ce fichier puis y faire un echo fichier en attendant le prochain mail. Je suis débutant en bash et je bloque par manque de connaissances là! je sais pas comment faire! Auriez-vous une idée? Cordialement Brice man formail Deja fait! et ça marche presque... En fait maintenant j'ai problème de locales avec! Il a du mal avec certains unicode ou ISO-8859-* que certains posteurs utilisent et ça je ne sais pas du tout comment le gérer. Si quelqu'un a une idée, elle est bienvenue. -- Brice Méalier [EMAIL PROTECTED] Linux user nb. 372699 Debian Sarge -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Script bash, lecture fichier on the fly
Brice Méalier [EMAIL PROTECTED] writes: On Sun, Jul 10, 2005 at 01:56:35PM +0200, Leopold BAILLY wrote : Brice Méalier [EMAIL PROTECTED] writes: [...] Un script perl aurait été plus adapté, il t'éviterai de lire 3 fois le mail. L'entée standard peut être traitée ligne à ligne, pour chaque header tu peux donc alimenter la variable qui va bien, enfin tu peus t'arrêter de lire dès que toutes les variables sont renseignées. Ok pour le script perl mais je ne sais pas programmer en Perl! J'en ai un à disposition qui marche très bien mais j'essaie d'y mettre un test avant à savoir: tester que je suis bien sous Fvwm (sinon le script ne doit pas être exécuté). J'ai implémenté un petit truc: my $test=`ps ax|grep -c [f]vwm`; if ($test==0) { exit 0; } mais je me demande bien si c'est correct! si tu en as une idée, ça serait sympa de me le dire! C'est bon. Autre façon de faire : exit if( system(ps ax | grep -q [f]vwm) != 0 ); Léo.
Re: Script bash, lecture fichier on the fly
On Sun, Jul 10, 2005 at 05:21:28PM +0200, Leopold BAILLY wrote : Brice Méalier [EMAIL PROTECTED] writes: On Sun, Jul 10, 2005 at 01:56:35PM +0200, Leopold BAILLY wrote : Brice Méalier [EMAIL PROTECTED] writes: [...] Un script perl aurait été plus adapté, il t'éviterai de lire 3 fois le mail. L'entée standard peut être traitée ligne à ligne, pour chaque header tu peux donc alimenter la variable qui va bien, enfin tu peus t'arrêter de lire dès que toutes les variables sont renseignées. Ok pour le script perl mais je ne sais pas programmer en Perl! J'en ai un à disposition qui marche très bien mais j'essaie d'y mettre un test avant à savoir: tester que je suis bien sous Fvwm (sinon le script ne doit pas être exécuté). J'ai implémenté un petit truc: my $test=`ps ax|grep -c [f]vwm`; if ($test==0) { exit 0; } mais je me demande bien si c'est correct! si tu en as une idée, ça serait sympa de me le dire! C'est bon. Autre façon de faire : exit if( system(ps ax | grep -q [f]vwm) != 0 ); Léo. Merci! bah premier truc que je fais en perl est-ce que tu connais un bon tuto pour le perl? parce que ce que j'ai trouvé est moyen... -- Brice Méalier [EMAIL PROTECTED] Linux user nb. 372699 Debian Sarge -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Script bash, lecture fichier on the fly
Brice Méalier [EMAIL PROTECTED] writes: On Sun, Jul 10, 2005 at 05:21:28PM +0200, Leopold BAILLY wrote : Brice Méalier [EMAIL PROTECTED] writes: [...] bah premier truc que je fais en perl est-ce que tu connais un bon tuto pour le perl? parce que ce que j'ai trouvé est moyen... Pour ce genre d'auto-formation, j'ai du mal à me passer d'un bon bouquin que je potasse tranquillement dans mon lit avant de m'endormir. Pour un voyage en profondeur dans bash, grep, sed, awk et une bonne initiation à perl, je te conseille scripts sous linux de Christophe Blaess (Eyrolles). Pour maîtriser toutes les subtilités de Perl, rien ne remplace le fameux camel's book programmation en Perl de Larry Wall (O'Reilly). Léo.
Re: Script bash, lecture fichier on the fly
On Sat, Jul 09, 2005 at 07:54:28AM +0200, Jean-Damien Durand wrote : Tu peut recuperer les headers que tu veux en une seule fois, par example: headers=`egrep ^(To:|Subject:|From:)|tr _`|sort -t: -u|xargs echo MailPopup $headers|FvwmCommand -c (coup de bol: From, Subject et To sont dans le bon ordre alphabetique - le fait que tu changes les espaces en '_' aide - sinon ca serait un peu plus tordu a cause du echo apres). En esperant que ca marche pour toi... Merci de la réponse mais ça marche pas! J'ai donc décidé de sauver le mail dans un fichier temporaire et de travailler ce fichier: tmp_mail=/tmp/tmp_mail cat $tmp_mail to=`grep -v \-To $tmp_mail |grep -m 1 To:|tr _` subject=`grep -m 1 Subject: $tmp_mail |tr _` from=`grep -m 1 From: $tmp_mail |tr _` rm $tmp_mail fvwmfunction='MailPopup'\ $from\ $subject\ $to echo $fvwmfunction|FvwmCommand -c Merci -- Brice Méalier [EMAIL PROTECTED] Linux user nb. 372699 Debian Sarge -- Pensez à lire la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Script bash, lecture fichier on the fly
Tu peut recuperer les headers que tu veux en une seule fois, par example: headers=`egrep ^(To:|Subject:|From:)|tr _`|sort -t: -u|xargs echo MailPopup $headers|FvwmCommand -c (coup de bol: From, Subject et To sont dans le bon ordre alphabetique - le fait que tu changes les espaces en '_' aide - sinon ca serait un peu plus tordu a cause du echo apres). En esperant que ca marche pour toi... A+, JD. On Saturday 09 July 2005 01:10, Brice Méalier wrote: BM to=`grep -v \-To|grep -m 1 To:|tr _` BM subject=`grep -m 1 Subject:|tr _` BM from=`grep -m 1 From:|tr _` BM BM fvwmfunction='MailPopup'\ $from\ $subject\ $to BM BM echo $fvwmfunction|FvwmCommand -c -- Jean-Damien Durand CERN/IT/ADC/CA - Geneva, Switzerland PGP PUBLIC KEY: http://home.cern.ch/~jdurand/public_key.asc This mail is signed using CERN CA, please use my PGP key otherwise CERN CA root certificate: http://cern.ch/service-grid-ca/crt/root_crt.html smime.p7s Description: S/MIME cryptographic signature