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=E9es dans $HOME/mail/
j'utilise procmail en que MDA.
Dans procmail, les mails sont tri=E9s selon les headers et pour mon
petit mail popper, j'utilise la r=E8gle suivante:
:0 c
*
|newMail.sh
tout nouveau mail est donc copi=E9 et pass=E9 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=3D`ps -ef|grep '[f]vwm -s'`
# make sure we are running fvwm
if [ -z "$FVWM" ]
then
exit 0
fi
le probl=E8me est que les donn=E9es =E0 lire sont volatiles et il n'est
capable de m'extraire seulement le premier champ sp=E9cifi=E9 (ici le
champ To, si je change l'ordre, il me lit le premier de la s=E9rie).
Donc 2 solutions (il me semble): lancer les 3 "grep" en m=EAme tempset
enregistrer leurs sorties respectives (je crois pas =E7a possible...) ou
enregistrer l'entr=E9e du script dans un fichier et travailler avec ce
fichier puis y faire un echo "">fichier en attendant le prochain mail.
Je suis d=E9butant en bash et je bloque par manque de connaissances l=E0!
je sais pas comment faire!
#! /usr/bin/awk -f /^To:/ { to=substr($0, 5) } # mais ca deconne pour les champs # sur plusieurs lignes, # utiliser formail -c
/^Subject:/ { subject = substr($0, 10) }
/^From:/ { from = substr($0, 10) }
/^$/ { exit }
END { if (system("pidof fvwm > /dev/null 2>&1") != 0) exit(1) # Faut echapper les quotes pour fvwm, ce n'est pas clair # dans ton exemple. Peut-etre quelque chose comme: gsub(/"/, """, from); from = """ from """
print "MailPopup", from, subject, to | "FvwmCommand -c" }
-- Stéphane
2005-07-8, 16:10(-07), bricem13@yahoo.com:
[...]
#!/bin/bash
FVWM=`ps -ef|grep '[f]vwm -s'`
# make sure we are running fvwm
if [ -z "$FVWM" ]
then
exit 0
fi
#! /usr/bin/awk -f
/^To:/ { to=substr($0, 5) } # mais ca deconne pour les champs
# sur plusieurs lignes,
# utiliser formail -c
/^Subject:/ { subject = substr($0, 10) }
/^From:/ { from = substr($0, 10) }
/^$/ { exit }
END {
if (system("pidof fvwm > /dev/null 2>&1") != 0) exit(1)
# Faut echapper les quotes pour fvwm, ce n'est pas clair
# dans ton exemple. Peut-etre quelque chose comme:
gsub(/"/, "\"", from); from = """ from """
print "MailPopup", from, subject, to | "FvwmCommand -c"
}
#! /usr/bin/awk -f /^To:/ { to=substr($0, 5) } # mais ca deconne pour les champs # sur plusieurs lignes, # utiliser formail -c
/^Subject:/ { subject = substr($0, 10) }
/^From:/ { from = substr($0, 10) }
/^$/ { exit }
END { if (system("pidof fvwm > /dev/null 2>&1") != 0) exit(1) # Faut echapper les quotes pour fvwm, ce n'est pas clair # dans ton exemple. Peut-etre quelque chose comme: gsub(/"/, """, from); from = """ from """
print "MailPopup", from, subject, to | "FvwmCommand -c" }
-- Stéphane
bricem13
Merci de la réponse mais je ne connais pas awk (mes connaissances en programmation sont maigres...).
J'ai résolu le pbm de la manière suivante:
#!/bin/bash
FVWM=`ps -ef|grep '[f]vwm -s'|tr " " "_"`
# make sure we are running fvwm if [ -z "$FVWM" ] then exit 0 fi
Je sauve donc le mail dans un fichier temporaire que j'efface après.
Merci
Brice
Rakotomandimby Mihamina
wrote:
Merci de la réponse mais je ne connais pas awk (mes connaissances en programmation sont maigres...).
Troll du week end:
Et puis sinon, dire que faire des scripts shell c'est de la programmation, il y en a qui ne sont pas d'accord.
-- Miroir de logiciels libres => http://www.etud-orleans.fr Un Nokia sous Linux, "programmable" en Open Source http://www.nokia.com/770 , http://www.maemo.org/ http://www.maemo.org/platform/docs/tutorials/Maemo_tutorial.html
bricem13@yahoo.com wrote:
Merci de la réponse mais je ne connais pas awk (mes connaissances en
programmation sont maigres...).
Troll du week end:
Et puis sinon, dire que faire des scripts shell c'est de la
programmation, il y en a qui ne sont pas d'accord.
--
Miroir de logiciels libres => http://www.etud-orleans.fr
Un Nokia sous Linux, "programmable" en Open Source
http://www.nokia.com/770 , http://www.maemo.org/
http://www.maemo.org/platform/docs/tutorials/Maemo_tutorial.html
Merci de la réponse mais je ne connais pas awk (mes connaissances en programmation sont maigres...).
Troll du week end:
Et puis sinon, dire que faire des scripts shell c'est de la programmation, il y en a qui ne sont pas d'accord.
-- Miroir de logiciels libres => http://www.etud-orleans.fr Un Nokia sous Linux, "programmable" en Open Source http://www.nokia.com/770 , http://www.maemo.org/ http://www.maemo.org/platform/docs/tutorials/Maemo_tutorial.html
william
Et puis sinon, dire que faire des scripts shell c'est de la programmation, il y en a qui ne sont pas d'accord.
c'est quoi de la programmation ?
$troll -= 1
-- William.
Et puis sinon, dire que faire des scripts shell c'est de la
programmation, il y en a qui ne sont pas d'accord.
bon au final j'ai choisi la solution d'enregistrer la mail dans un fichier temporaire et de le travailler avec formail.
Merci pour les réponses (sauf les trolls -;)
-- Brice Linux user nb. 372699 Debian Sarge
Stephane Chazelas
2005-07-9, 03:08(-07), :
Merci de la réponse mais je ne connais pas awk (mes connaissances en programmation sont maigres...).
awk fait partie de l'attirail de la programmation shell et est tres utile et tres simple.
J'ai résolu le pbm de la manière suivante:
#!/bin/bash
FVWM=`ps -ef|grep '[f]vwm -s'|tr " " "_"`
# make sure we are running fvwm if [ -z "$FVWM" ] then exit 0 fi
Ce qui peut s'ecrire:
ps -eo 'args=' | grep '[f]vwm -s' && exit 0
tmp_mail=/tmp/tmp_mail
Les fichiers temporaires sont un cauchemard. Problemes de securité (et si quelqu'un fait un ln -s ~toi/.rhosts /tmp/tmp_mail, de propreté (et si ton script est interrompu par un control-C) de confidentialité (t'es tu assuré que ce fichier ne soit lisible que par toi? Tout le monde peut lire ton mail?), de robustesse (que se passe-t-il quand il n'y a plus de place sur le disque (heureusement en general sendmail verifie que /tmp n'est pas trop plein avant d'accepter des mails).
Merci de la réponse mais je ne connais pas awk (mes connaissances en
programmation sont maigres...).
awk fait partie de l'attirail de la programmation shell et est
tres utile et tres simple.
J'ai résolu le pbm de la manière suivante:
#!/bin/bash
FVWM=`ps -ef|grep '[f]vwm -s'|tr " " "_"`
# make sure we are running fvwm
if [ -z "$FVWM" ]
then
exit 0
fi
Ce qui peut s'ecrire:
ps -eo 'args=' | grep '[f]vwm -s' && exit 0
tmp_mail=/tmp/tmp_mail
Les fichiers temporaires sont un cauchemard. Problemes de
securité (et si quelqu'un fait un ln -s ~toi/.rhosts
/tmp/tmp_mail, de propreté (et si ton script est interrompu par
un control-C) de confidentialité (t'es tu assuré que ce fichier
ne soit lisible que par toi? Tout le monde peut lire ton mail?),
de robustesse (que se passe-t-il quand il n'y a plus de place
sur le disque (heureusement en general sendmail verifie que /tmp
n'est pas trop plein avant d'accepter des mails).
Merci de la réponse mais je ne connais pas awk (mes connaissances en programmation sont maigres...).
awk fait partie de l'attirail de la programmation shell et est tres utile et tres simple.
J'ai résolu le pbm de la manière suivante:
#!/bin/bash
FVWM=`ps -ef|grep '[f]vwm -s'|tr " " "_"`
# make sure we are running fvwm if [ -z "$FVWM" ] then exit 0 fi
Ce qui peut s'ecrire:
ps -eo 'args=' | grep '[f]vwm -s' && exit 0
tmp_mail=/tmp/tmp_mail
Les fichiers temporaires sont un cauchemard. Problemes de securité (et si quelqu'un fait un ln -s ~toi/.rhosts /tmp/tmp_mail, de propreté (et si ton script est interrompu par un control-C) de confidentialité (t'es tu assuré que ce fichier ne soit lisible que par toi? Tout le monde peut lire ton mail?), de robustesse (que se passe-t-il quand il n'y a plus de place sur le disque (heureusement en general sendmail verifie que /tmp n'est pas trop plein avant d'accepter des mails).
Le fichier temporaire est stocké sous /tmp et effacé dès qu'il a été utilisé par le script!
là par contre le ne voit pas trop ce que tu veux dire par: "ln -s ~toi/.rhosts /tmp/tmp_mail" désolé mais je vois pas sur koi pointe le lien là!
Ok il est toujors possible de placer le fichier temporaire dans mon /home.
Par contre autre question, qu'en est-il des types de codage de certains mailers qui sont différents du mien? comment les reconvertir (soit ne plus avoir des caractères tous bizarres et des trucs style: ?ISO-8859-1? entre autres?)
Merci pour la réponse
Brice
ok pour l'équivalence!
Le fichier temporaire est stocké sous /tmp et effacé dès qu'il a
été utilisé par le script!
là par contre le ne voit pas trop ce que tu veux dire par: "ln -s
~toi/.rhosts
/tmp/tmp_mail" désolé mais je vois pas sur koi pointe le lien là!
Ok il est toujors possible de placer le fichier temporaire dans mon
/home.
Par contre autre question, qu'en est-il des types de codage de certains
mailers qui sont différents du mien? comment les reconvertir (soit ne
plus avoir des caractères tous bizarres et des trucs style:
?ISO-8859-1? entre autres?)
Le fichier temporaire est stocké sous /tmp et effacé dès qu'il a été utilisé par le script!
là par contre le ne voit pas trop ce que tu veux dire par: "ln -s ~toi/.rhosts /tmp/tmp_mail" désolé mais je vois pas sur koi pointe le lien là!
Ok il est toujors possible de placer le fichier temporaire dans mon /home.
Par contre autre question, qu'en est-il des types de codage de certains mailers qui sont différents du mien? comment les reconvertir (soit ne plus avoir des caractères tous bizarres et des trucs style: ?ISO-8859-1? entre autres?)