j'ai écrit un petit script en Perl qui permet de lancer plusieurs
snmpget sur un routeur puis d'inserer le résultat dans une base de
données mysql, et d'envoyer un mail selon la valeur du résultat. OK.
Tout fonctionne bien. Pour automatiser la tâche, j'utilise cron. Mais ca
ne marche pas.
exemple : crontab : 5,10 * * * * perl checkLink.pl
Le démon crond lance bien la commande "perl checkLink.pl" : OK
Mais j'ai l'impression que mes variables ne s'initialisent pas
correctement. Mon programme ne se comporte pas de la même manière que si
je le lancais dans un xterm en ligne de commande qu'à partir du démon cron.
Avez vous déjà eu ce problème ?
Pour automatiser la tâche, j'utilise cron. Mais ca ne marche pas. ...
Avez vous déjà eu ce problème ?
oui
il y avait un bug a la ligne 37*
*(C) fr.comp.lang.perl ?
Alex Marandon
On 2004-01-09, Ted wrote:
correctement. Mon programme ne se comporte pas de la même manière que si je le lancais dans un xterm en ligne de commande qu'à partir du démon cron. Avez vous déjà eu ce problème ?
Difficile à dire si tu n'indique pas plus précisément les erreurs, mais il faut peut être voir du côté de l'environnement (%ENV).
On 2004-01-09, Ted <teddy.li@free.fr> wrote:
correctement. Mon programme ne se comporte pas de la même manière que si
je le lancais dans un xterm en ligne de commande qu'à partir du démon cron.
Avez vous déjà eu ce problème ?
Difficile à dire si tu n'indique pas plus précisément les erreurs, mais
il faut peut être voir du côté de l'environnement (%ENV).
correctement. Mon programme ne se comporte pas de la même manière que si je le lancais dans un xterm en ligne de commande qu'à partir du démon cron. Avez vous déjà eu ce problème ?
Difficile à dire si tu n'indique pas plus précisément les erreurs, mais il faut peut être voir du côté de l'environnement (%ENV).
Jérémy JUST
On Thu, 08 Jan 2004 16:18:22 -1000 Ted wrote:
exemple : crontab : 5,10 * * * * perl checkLink.pl Le démon crond lance bien la commande "perl checkLink.pl" : OK Mais j'ai l'impression que mes variables ne s'initialisent pas correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron (alors qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le plus simple est soit de passer une option `-I dir' à perl, soit de coder en dur la valeur de @INC dans le programme. Si ce n'est pas cette variable, hé bien il te reste à passer tout %ENV en revue...
-- Jérémy JUST
On Thu, 08 Jan 2004 16:18:22 -1000
Ted <teddy.li@free.fr> wrote:
exemple : crontab : 5,10 * * * * perl checkLink.pl
Le démon crond lance bien la commande "perl checkLink.pl" : OK
Mais j'ai l'impression que mes variables ne s'initialisent pas
correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les
erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron (alors
qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le plus
simple est soit de passer une option `-I dir' à perl, soit de coder en dur
la valeur de @INC dans le programme.
Si ce n'est pas cette variable, hé bien il te reste à passer tout %ENV
en revue...
exemple : crontab : 5,10 * * * * perl checkLink.pl Le démon crond lance bien la commande "perl checkLink.pl" : OK Mais j'ai l'impression que mes variables ne s'initialisent pas correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron (alors qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le plus simple est soit de passer une option `-I dir' à perl, soit de coder en dur la valeur de @INC dans le programme. Si ce n'est pas cette variable, hé bien il te reste à passer tout %ENV en revue...
-- Jérémy JUST
Terrot Francois
Jérémy JUST écrivait news::
On Thu, 08 Jan 2004 16:18:22 -1000 Ted wrote:
exemple : crontab : 5,10 * * * * perl checkLink.pl Le démon crond lance bien la commande "perl checkLink.pl" : OK Mais j'ai l'impression que mes variables ne s'initialisent pas correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron (alors qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le plus simple est soit de passer une option `-I dir' à perl, soit de coder en dur la valeur de @INC dans le programme. Si ce n'est pas cette variable, hé bien il te reste à passer tout %ENV en revue...
Je confirme le fait que cron (cf man cron) utilise un environnemnt restreint sous sh en général. Il n'y a quasiment aucune variable d'environnemnt de définie, à part le strict minimum vital ... bref %ENV sera vide ou presque ...
Si ton script envoie des messages sur la sortie standard (stdout) ou la sortie d'erreur (stderr) cron devrait les avoir envoyer par un mail a l'utilisateur (si toutefois le mail fonctionne!). La solution pour récupérer ces messages de sortie de cron est de rediriger les sorties vers des fichiers, ce qui pourrait donner :
Jérémy JUST <jeremy_just@netcourrier.com> écrivait
news:20040112231448.568b9920.jeremy_just@netcourrier.com:
On Thu, 08 Jan 2004 16:18:22 -1000
Ted <teddy.li@free.fr> wrote:
exemple : crontab : 5,10 * * * * perl checkLink.pl
Le démon crond lance bien la commande "perl checkLink.pl" : OK
Mais j'ai l'impression que mes variables ne s'initialisent pas
correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les
erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins
ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron
(alors
qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le
plus simple est soit de passer une option `-I dir' à perl, soit de
coder en dur la valeur de @INC dans le programme.
Si ce n'est pas cette variable, hé bien il te reste à passer tout
%ENV
en revue...
Je confirme le fait que cron (cf man cron) utilise un environnemnt
restreint sous sh en général. Il n'y a quasiment aucune variable
d'environnemnt de définie, à part le strict minimum vital ... bref %ENV
sera vide ou presque ...
Si ton script envoie des messages sur la sortie standard (stdout) ou la
sortie d'erreur (stderr) cron devrait les avoir envoyer par un mail a
l'utilisateur (si toutefois le mail fonctionne!). La solution pour
récupérer ces messages de sortie de cron est de rediriger les sorties vers
des fichiers, ce qui pourrait donner :
exemple : crontab : 5,10 * * * * perl checkLink.pl Le démon crond lance bien la commande "perl checkLink.pl" : OK Mais j'ai l'impression que mes variables ne s'initialisent pas correctement.
Dans cron comme en interactif, tu as tout intérêt à regarder les erreurs, qui ont dû t'être envoyées par mail. Il y a peu de devins ici.
Un problème courant est $PERLLIB, qui n'est pas définie par cron (alors qu'elle l'est peut-être dans ton shell courant). Pour corriger ça, le plus simple est soit de passer une option `-I dir' à perl, soit de coder en dur la valeur de @INC dans le programme. Si ce n'est pas cette variable, hé bien il te reste à passer tout %ENV en revue...
Je confirme le fait que cron (cf man cron) utilise un environnemnt restreint sous sh en général. Il n'y a quasiment aucune variable d'environnemnt de définie, à part le strict minimum vital ... bref %ENV sera vide ou presque ...
Si ton script envoie des messages sur la sortie standard (stdout) ou la sortie d'erreur (stderr) cron devrait les avoir envoyer par un mail a l'utilisateur (si toutefois le mail fonctionne!). La solution pour récupérer ces messages de sortie de cron est de rediriger les sorties vers des fichiers, ce qui pourrait donner :