GNT sans publicité, site mobile, fonctionnalitées exclusives...

[HS] script perl marche pas en cron

Le
Nicolas Roudninski
Bonjour à tous,

Je me suis fait un petit script perl qui vérifie ma boite aux lettres
et m'affiche un message (avec zenity) si un auteur choisi m'a écrit.
Le problème est que ce script fonctionne bien à partir d'une console
mais pas à partir d'une tache cron, du moins pas tout le script
Apparemment, le script fonctionne pour ce qui est de la vérif email,
mais pas ensuite (affichage de l'info via zenity).
Ce pourrait-ce être une question de DISPLAY ?

Voici le script en question :
debut du script--
my $xdlg = "/usr/bin/zenity";
my $pop;
my $i;
my $nom;
my @amis;
my $amis_data;
my $email;
#chomp(my $user = `whoami`);
my $user = "nicolas";
chomp(my $home_dir = "/home/$user");

print "connection au serveur";
$pop = new Mail::POP3Client( USER => "nroudninski",
PASSWORD => "YDjqCDDi",
HOST => "pop.wanadoo.fr" );

sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."";
}
for ($i = 1; $i <= $pop->Count(); $i++) {
# print @amis;
foreach my $amis (@amis) {
my @amis_data = split / *: */, $amis;
$email = $amis_data[1];
chomp($email);
$nom = $amis_data[0];
&compare;
# print $email;
}
}
close DATAFILE;
return ;
} # - end of subroutine read_data -

sub compare {
# for ($i = 1; $i <= $pop->Count(); $i++) {
foreach ( $pop->Head( $i ) ) {
if (/From:.*$email/) {
chomp;
print "Un message de $nom [$email]";
# s/From://;
# print " [$_ ]";
my $adresse = $_;
system"$xdlg --info --text 'Un message
de $nom'"; }
}
# }
return ;
} # - end of subroutine compare -

read_data;
-fin du script-

--
Nicolas Roudninski
nroudninski@wanadoo.fr
-
Toute ressemblance avec des fautes d'orthographe, de grammaire
ou de conjugaison existantes ou ayant existé serait entièrement
fortuite et indépendante de la volonté de l'auteur.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Lire les 16 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent Besson
Le #9277451
Le dimanche 9 Juillet 2006 15:39, Nicolas Roudninski a écrit :
USER     => "nroudninski",
 PASSWORD => "YDjqCDDi",



J'espère que cela n'est pas ton vrai login !
Nicolas Roudninski
Le #9277441
Le Sun, 9 Jul 2006 15:51:11 +0200
Laurent Besson a écrit :

Le dimanche 9 Juillet 2006 15:39, Nicolas Roudninski a écrit :
> USER     => "nroudninski",
> PASSWORD => "YDjqCDDi",

J'espère que cela n'est pas ton vrai login !

---------------------------------------------------------------------------------------
Orange vous informe que cet e-mail a ete controle par l'anti-virus
mail. Aucun virus connu a ce jour par nos services n'a ete detecte.





euh, mince, je change ça tout de suite !!!

--
Nicolas Roudninski

----------------------
Toute ressemblance avec des fautes d'orthographe, de grammaire
ou de conjugaison existantes ou ayant existé serait entièrement
fortuite et indépendante de la volonté de l'auteur.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Laurent Besson
Le #9277401
Le dimanche 9 Juillet 2006 16:02, Nicolas Roudninski a écrit :
Le Sun, 9 Jul 2006 15:51:11 +0200

euh, mince, je change ça tout de suite !!!




Fait une demande à de ne pas archiver ce thread !
:(
Laurent Besson
Le #9277391
Le dimanche 9 Juillet 2006 15:39, Nicolas Roudninski a écrit :
Bonjour à tous,
my $xdlg = "/usr/bin/zenity";
my $pop;
my $i;
my $nom;
my @amis;
my $amis_data;
my $email;
#chomp(my $user = `whoami`);
my $user = "nicolas";
chomp(my $home_dir = "/home/$user");

print "connection au serveur...n";
$pop = new Mail::POP3Client( USER => "nroudninski",
PASSWORD => "YDjqCDDi",
HOST => "pop.wanadoo.fr" );

sub read_data {
open DATAFILE, "$home_dir/amis.dat"
or die "Fichier introuvable !";
while (<DATAFILE>) {
chomp;
push @amis, $_."n";
}
for ($i = 1; $i <= $pop->Count(); $i++) {
# print @amis;
foreach my $amis (@amis) {
my @amis_data = split / *: */, $amis;
$email = $amis_data[1];
chomp($email);
$nom = $amis_data[0];
&compare;
# print $email;
}
}
close DATAFILE;
return ;
} # ---------- end of subroutine read_data ----------

sub compare {
# for ($i = 1; $i <= $pop->Count(); $i++) {
foreach ( $pop->Head( $i ) ) {
if (/From:.*$email/) {
chomp;
print "Un message de $nom [$email]n";
# s/From://;
# print " [$_ ]n";
my $adresse = $_;
system"$xdlg --info --text 'Un message
de $nom'"; }
}
# }
return ;
} # ---------- end of subroutine compare ----------

read_data;
----------------------------fin du script-------------------------------



Comment dans ta console lances tu le script ?
Car chez moi il me met : Can't locate object method "new" via package
"Mail::POP3Client" (perhaps you forgot to load "Mail::POP3Client"?) at
mail.pl line 16 ...
Mais bon c'est une autre histoire !
Gabriel Moreau
Le #9277381
Le pb est que pour l'affichage, il faut la variable DISPLAY que ton
script n'a pas puisqu'il est lancé par cron.

Il vaut mieux dans ton cas faire un script qui boucle avec un sleep 5
dans la boucle. Le résultat est le même mais tu hérites alors de la
variable DISPLAY de ton environnement graphique.

gaby


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Suivre les réponses
Poster une réponse
Anonyme