Un script perl pour gérer de l'alerte email

Le
messian_nospam
Bonjour à tous,

Sur le site easynounou.com je voudrais ajouter un système d'alerte
email.

L'idée c'est de générer des emails d'alerte lors de mises à jour de la
base. Ces alertes sont stoquées dans une table MYSQL.

Il ne me reste plus alors qu'à mettre en place un script qui à interval
régulier va aller chercher dans la table en question les emails à
envoyer, les envoies et modifie les enregistrements dans la table.

J'ai essayé du côté de PHP mais dès que j'ai de nombreux emails à
traiter cela se met à ne plus fonctionner !

Peut-être que PERL est mon ami ? Des exemples de scripts permettant ce
type de chose ? Comment faire pour que le script se recharge si il y a
beaucoup de mails à traiter ? Comment mettre en place un prompt
permetant au script de se lancer automatiquement par exemple toutes les
heures ?

Merci de vos conseils je suis totalement néophyte en perl !

--
Un moyen de garde pour vos enfants ? http://www.easynounou.com
Le + court chemin entre les enfants et celles qui les gardent
(nounous, baby-sitter, assistantes maternelles, au pair)
Vos réponses Page 1 / 2
Trier par : date / pertinence
Jérémy JUST
Le #126106
Le Tue, 5 Sep 2006 19:39:26 +0200,

J'ai essayé du côté de PHP mais dès que j'ai de nombreux emails à
traiter... cela se met à ne plus fonctionner !


Je ne pense pas que le problème vienne du langage, mais plutôt de ton
programme.


Peut-être que PERL est mon ami ?


Ben, oui, en Perl tu pourras faire simplement ce que tu veux. Mais si
tout le reste de tes script sont en PHP, ça va peut-être complexifier
la maintenance d'ajouter un bout en Perl, non?


Des exemples de scripts permettant ce type de chose ?


Pour accéder à la base de données, tu auras besoin du module DBI,
avec le pilote DBD::mysql.

Pour envoyer les mails, je pense que tu peux utiliser Mail::Sender
(j'avoue faire des choses moins propres dans mes programmes, et parler
directement à Sendmail).


Comment faire pour que le script se recharge si il y a
beaucoup de mails à traiter ?


Le mieux, c'est qu'il ne se termine qu'une fois le boulot terminé.


Comment mettre en place un prompt permetant au script de se lancer
automatiquement par exemple toutes les heures ?


Un prompt? Que veux-tu dire?
Le plus simple est d'utiliser cron, qui lancera ton script toutes les
heures.



Je viens de voir ce thread, qui semble traiter un problème proche du
tien:
http://groups.google.fr/group/fr.comp.lang.perl/browse_frm/thread/48a3233eca2d8d15/11d39d25448e8d7d

--
Jérémy JUST
bsdouille
Le #126103
yop yop

#!/usr/bin/perl -w
use Mail::SendEasy ;

$date1 = `date | awk ' NR==1 {print ($2) }'`;
chomp ( $date1 ) ;

@auth = ` cat /var/log/auth.log ` ;
my @sortie = grep {/$date1/} @auth ;
print @sortie ;



my $mail = new Mail::SendEasy(
smtp => 'smtp.XXX.fr' ,
) ;

my $status = $mail->send(
from => '' ,
from_title => '' ,
reply => '' ,
to => '' ,
subject => "le raport secu de la journée" ,
msg => "@sortie n fin du log!" ,
msgid => "0101" ,
) ;

if (!$status) { print $mail->error ;}

voila un example de script pour envoyer des mail cela marche tres bien
avec de nombreux mail 'Mail::SendEasy' est simple a mettre en oeuvre et
si tu le couple avec un DBD::sql tu vas pouvoir faire ce que tu veux .


tu ne dis pas sur qu'elle os tu es ???
en tout cas si tu est sous un linux/unix il suffit de faire un simple
cron pour pouvoir lancer ton scrip selon tes besoins sous windows je
sais pas comment ça marche mais amha c'est pas la mer a boire :)

un ex de crontab "15 23 * * * root perl
/root/aXX.pl"


voila
messian_nospam
Le #126102

voila un example de script pour envoyer des mail cela marche tres bien
avec de nombreux mail 'Mail::SendEasy' est simple a mettre en oeuvre et
si tu le couple avec un DBD::sql tu vas pouvoir faire ce que tu veux .


Merci... une idée du nombre de mails qu'un script perl permet d'envoyer
sans être à genou ?

--
Un moyen de garde pour vos enfants ? http://www.easynounou.com
Le + court chemin entre les enfants et celles qui les gardent
(nounous, baby-sitter, assistantes maternelles, au pair)

Jérémy JUST
Le #126101
Le 6 Sep 2006 01:51:13 -0700,

$date1 = `date | awk ' NR==1 {print ($2) }'`;
@auth = ` cat /var/log/auth.log ` ;


Pourquoi faire aussi compliqué pour récupérer le mois et lire un
fichier?


--
Jérémy JUST
messian_nospam
Le #126100
Jérémy JUST
Le Tue, 5 Sep 2006 19:39:26 +0200,

J'ai essayé du côté de PHP mais dès que j'ai de nombreux emails à
traiter... cela se met à ne plus fonctionner !


Je ne pense pas que le problème vienne du langage, mais plutôt de ton
programme.


Le probleme avec PHP pour l'envoi des emails c'est que le time out ne me
permet pas de traiter tous les envoies...

--
Un moyen de garde pour vos enfants ? http://www.easynounou.com
Le + court chemin entre les enfants et celles qui les gardent
(nounous, baby-sitter, assistantes maternelles, au pair)


Jérémy JUST
Le #126099
On Thu, 7 Sep 2006 08:38:28 +0200
(JF Messian) wrote:

Je ne pense pas que le problème vienne du langage, mais plutôt de ton
programme.
Le probleme avec PHP pour l'envoi des emails c'est que le time out ne me

permet pas de traiter tous les envoies...


Euh, quel time-out? J'ai du mal à croire que le langage PHP impose une
durée maximale d'exécution aux programmes qui sont écrits avec lui.

--
Jérémy JUST

messian_nospam
Le #126098
Jérémy JUST
On Thu, 7 Sep 2006 08:38:28 +0200
(JF Messian) wrote:

Je ne pense pas que le problème vienne du langage, mais plutôt de ton
programme.
Le probleme avec PHP pour l'envoi des emails c'est que le time out ne me

permet pas de traiter tous les envoies...


Euh, quel time-out? J'ai du mal à croire que le langage PHP impose une
durée maximale d'exécution aux programmes qui sont écrits avec lui.


PHP non... mais les paramètrages du serveur apache oui. Le Time Out est
réglé autour de 3 minutes pour éviter qu'un script plante le serveur en
cas de boucle ou autre.

D'où ma question concernant PERL... je pourrais trouver une autre
solution pour que les alertes ne soit pas envoyées depuis le serveur web
mais ça devient une usine à gaz.

--
Un moyen de garde pour vos enfants ? http://www.easynounou.com
Le + court chemin entre les enfants et celles qui les gardent
(nounous, baby-sitter, assistantes maternelles, au pair)



bsdouille
Le #128859
Jérémy JUST wrote:
Le 6 Sep 2006 01:51:13 -0700,

$date1 = `date | awk ' NR==1 {print ($2) }'`;
@auth = ` cat /var/log/auth.log ` ;


Pourquoi faire aussi compliqué pour récupérer le mois et lire un
fichier?


--
Jérémy JUST

car je suis pas un pro du perl et c'est seul façon que j'ai trouvé ;)


Jérémy JUST
Le #128858
On Thu, 7 Sep 2006 14:39:08 +0200
(JF Messian) wrote:

PHP non... mais les paramètrages du serveur apache oui. Le Time Out est
réglé autour de 3 minutes pour éviter qu'un script plante le serveur en
cas de boucle ou autre.


Mais ton script n'a aucune raison d'être attaché à Apache, puisqu'il n'a
aucune lien avec le web!



je pourrais trouver une autre solution pour que les alertes ne soit pas
envoyées depuis le serveur web


Voilà.
Je pense que la meilleure solution est de faire lancer ton script par
cron.


mais ça devient une usine à gaz.


Au contraire, ce sera plus simple.
Je ne vois pas comment tu voulais faire exécuter ton script toutes les
heures à partir d'Apache.


--
Jérémy JUST
Jérémy JUST
Le #128857
On 7 Sep 2006 10:29:20 -0700
wrote:

$date1 = `date | awk ' NR==1 {print ($2) }'`;
@auth = ` cat /var/log/auth.log ` ;
c'est seul façon que j'ai trouvé ;)




use DateTime ;
my $date1 = DateTime->now()->month_abbr() ;

open(LOG, "< /var/log/auth.log" ) or die "Cannot open auth.log: $!" ;
my @auth = <LOG> ;


(non testé)


--
Jérémy JUST


Publicité
Poster une réponse
Anonyme