Script dans crontab et redirection sortie standard

2006-06-27 Par sujet Seb
Bonjour,

Voici mon problème du matin. Je cherche à faire un script qui m'envoie
régulièrement par mail les relevés de température effectués sur mon
serveur. Le script appelle des commandes et redirrige leur sortie vers
un fichier. Une fois terminé, ce fichier est envoyé par mail.

Lorsque je lance le script à la main depuis un terminal, tout est OK mon
fichier contient bien les relevés de température de la carte mère et des
disques.
Lorsque je l'inscrit dans le crontab, je ne récupère que la sortie de la
commande mbmon, pas de température disque dans le fichier...

J'ai retourné le problème dans pas mal de sens et je ne vois pas ce qui
pourrait merder...

Si quelqu'un veut bien y jeter un oeil...

Merci d'avance.


#!/bin/sh
# Envoie par e-mail les relevés de température

TMP_DIR=/tmp
TMP_FILE=temp.txt
[EMAIL PROTECTED]
SUBJECT=`hostname` - Relevés de température

cd $TMP_DIR
rm -f $TMP_FILE

# Message d'accueil
echo Relevés de température effectués le `date`  $TMP_FILE

# Carte mère
echo  $TMP_FILE
echo Carte mère :`mbmon -c 1`  $TMP_FILE

# Disques
echo  $TMP_FILE
echo Disques :  $TMP_FILE
echo `hddtemp /dev/hda`  $TMP_FILE
echo `hddtemp /dev/hdb`  $TMP_FILE

# On repasse en ISO-8859-15
recode UTF-8..ISO-8859-15 $TMP_DIR/$TMP_FILE

# Envoi de l'e-mail
mail -s $SUBJECT  $E_MAIL  $TMP_DIR/$TMP_FILE


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re : Script dans crontab et redirection sortie standard

2006-06-27 Par sujet pingouin osmolateur
Salut 
Sous quelle identité tu exécutes ton script ?

Sinon ta commande d'envoie de mail me parait suspect.
j'aurais utiliser la commande suivante 
mail -s subject user EOF
body
EOF

Que contient ton fichier $TMP_DIR/$TMP_FILE a la fin de l'exécution du script?

Voila quelques idées.
AC


- Message d'origine 
De : Seb [EMAIL PROTECTED]
À : debian-user-french@lists.debian.org
Envoyé le : Mardi, 27 Juin 2006, 9h05mn 13s
Objet : Script dans crontab et redirection sortie standard

Bonjour,

Voici mon problème du matin. Je cherche à faire un script qui m'envoie
régulièrement par mail les relevés de température effectués sur mon
serveur. Le script appelle des commandes et redirrige leur sortie vers
un fichier. Une fois terminé, ce fichier est envoyé par mail.

Lorsque je lance le script à la main depuis un terminal, tout est OK mon
fichier contient bien les relevés de température de la carte mère et des
disques.
Lorsque je l'inscrit dans le crontab, je ne récupère que la sortie de la
commande mbmon, pas de température disque dans le fichier...

J'ai retourné le problème dans pas mal de sens et je ne vois pas ce qui
pourrait merder...

Si quelqu'un veut bien y jeter un oeil...

Merci d'avance.


#!/bin/sh
# Envoie par e-mail les relevés de température

TMP_DIR=/tmp
TMP_FILE=temp.txt
[EMAIL PROTECTED]
SUBJECT=`hostname` - Relevés de température

cd $TMP_DIR
rm -f $TMP_FILE

# Message d'accueil
echo Relevés de température effectués le `date`  $TMP_FILE

# Carte mère
echo  $TMP_FILE
echo Carte mère :`mbmon -c 1`  $TMP_FILE

# Disques
echo  $TMP_FILE
echo Disques :  $TMP_FILE
echo `hddtemp /dev/hda`  $TMP_FILE
echo `hddtemp /dev/hdb`  $TMP_FILE

# On repasse en ISO-8859-15
recode UTF-8..ISO-8859-15 $TMP_DIR/$TMP_FILE

# Envoi de l'e-mail
mail -s $SUBJECT  $E_MAIL  $TMP_DIR/$TMP_FILE


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]






Re: Script dans crontab et redirection sortie standard

2006-06-27 Par sujet Jacques L'helgoualc'h
Seb a écrit, mardi 27 juin 2006, à 09:05 :
 Bonjour,

bonjour,

 [...]
 Lorsque je lance le script à la main depuis un terminal, tout est OK mon
 fichier contient bien les relevés de température de la carte mère et des
 disques.
 Lorsque je l'inscrit dans le crontab, je ne récupère que la sortie de la
 commande mbmon, pas de température disque dans le fichier...
 
 J'ai retourné le problème dans pas mal de sens et je ne vois pas ce qui
 pourrait merder...

Le $PATH en crontab est réduit  à /usr/bin:/bin (man 5 crontab), donc tu
aurais ce problème avec un hddtemp maison dans /usr/local/bin/.

Par aillleurs :

 $ ls -l $(which hddtemp)
lrwxrwxrwx  1 root root ... /usr/bin/hddtemp - /usr/sbin/hddtemp

 $ ls -l /usr/sbin/hddtemp
-rwsr-xr-x  1 root root ... /usr/sbin/hddtemp
___^

donc vérifie que ton binaire est bien setuid root ?


N.B. on peut aussi simplifier

 echo `hddtemp /dev/hda`  $TMP_FILE

en

 hddtemp /dev/hda  $TMP_FILE

-- 
Jacques L'helgoualc'h


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Script dans crontab et redirection sortie standard

2006-06-27 Par sujet kolter

en un petit peu amélioré (non testé) : 

--

#!/bin/sh

E_MAIL=[EMAIL PROTECTED]
SUBJECT=$(hostname) - Relevés de température

(
# Message d'accueil
echo Relevés de température effectués le $(date)

# Carte mère
echo
echo Carte mère : $(mbmon -c 1 21)

# Disques
echo
echo Disques :
hddtemp /dev/hda 21
hddtemp /dev/hdb 21
) | iconv -f UTF-8 -t ISO-8859-15 | mail -s $SUBJECT $E_MAIL

-

M.

-- 
 mail : [EMAIL PROTECTED]
  gpg : 0x414EC36E
  jid : [EMAIL PROTECTED]
  irc : [EMAIL PROTECTED]


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Script dans crontab et redirection sortie standard

2006-06-27 Par sujet Seb
Jacques L'helgoualc'h a écrit :

[...]

 Par aillleurs :
 
  $ ls -l $(which hddtemp)
 lrwxrwxrwx  1 root root ... /usr/bin/hddtemp - /usr/sbin/hddtemp
 
  $ ls -l /usr/sbin/hddtemp
 -rwsr-xr-x  1 root root ... /usr/sbin/hddtemp
 ___^
 
 donc vérifie que ton binaire est bien setuid root ?

Problème de $PATH... c'est bien vu ! je vais jeter un coup d'oeil.

 N.B. on peut aussi simplifier
 
  echo `hddtemp /dev/hda`  $TMP_FILE
 
 en
 
  hddtemp /dev/hda  $TMP_FILE

C'était la première version du script et j'ai ajouté le echo en pensant
que c'était là la cause de mon problème.

J'essaye les quelques pistes qui m'ont été suggérées et je fais un feedback.

Seb


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: Script dans crontab et redirection sortie standard

2006-06-27 Par sujet Seb
Seb a écrit :
 Problème de $PATH... c'est bien vu ! je vais jeter un coup d'oeil.

On y est. C'était bien un problème de $PATH. hddtemp est dans /usr/sbin.
J'ai ajouté ce chemin au $PATH dans mon script et ça fonctionne
correctement.

J'ai pris la version améliorée du script fournie par M. (j'espère que
c'est sous GPL...).

Il ne me reste plus qu'un petit problème d'encodage des caractères à
gérer mais je devrais m'en sortir.

Merci à tous.

Seb


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: redirection sortie standard

2006-05-31 Par sujet Hugues LARRIVE

Matthieu a écrit :

bonsoir

j'ai un petit soucis de logging de scripts shell.
ma crontab appelle un fichier save.sh qui en gros va appeler trois 
autres scripts shell qui me sauvegardent respectivement les profils 
firefox, thunderbird et gaim.


0 0 * * * $HOME/scripts/save.sh  $HOME/logs/save.log

lorsque je lance cette crontab, j'ai plusieurs centaines de lignes de 
sorties.


le fichier save.sh ne contient que

#!/bin/sh
#
# sauvegarde tous les profils
#
$HOME/scripts/personal_save_gaim.sh
$HOME/scripts/personal_save_thunderbird.sh
$HOME/scripts/personal_save_firefox.sh

mais le fichier de log generé par la crontab ne contient que trois 
lignes, chacune des lignes est generé par le script persona_save 
correspondant


saving gaim profile...
saving thunderbird profile...
saving firefox profile...

mais aucune des sorties realisées par le commandes rsync ne sont 
sauvegardées, alors qu'elles sont visibles lorsque j'appelle save.sh 
en ligne de commande

je ne comprends pas pourquoi.
peut etre pourriez vous m'aider?
bien cordialement

Matthieu
Je crois que c'est $HOME qui pose problème, quand tu appelles save.sh en 
ligne de commande $HOME est définit et c'est ton répertoire utilisateur, 
quand save.sh est appelé par cron $HOME n'est certainement pas définit.



--
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



redirection sortie standard

2006-05-29 Par sujet Matthieu
bonsoir

j'ai un petit soucis de logging de scripts shell.
ma crontab appelle un fichier save.sh qui en gros va appeler trois
autres scripts shell qui me sauvegardent respectivement les profils
firefox, thunderbird et gaim.

0 0 * * * $HOME/scripts/save.sh  $HOME/logs/save.log

lorsque je lance cette crontab, j'ai plusieurs centaines de lignes de sorties.

le fichier save.sh ne contient que

#!/bin/sh
#
# sauvegarde tous les profils
#
$HOME/scripts/personal_save_gaim.sh
$HOME/scripts/personal_save_thunderbird.sh
$HOME/scripts/personal_save_firefox.sh

mais le fichier de log generé par la crontab ne contient que trois
lignes, chacune des lignes est generé par le script persona_save
correspondant

saving gaim profile...
saving thunderbird profile...
saving firefox profile...

mais aucune des sorties realisées par le commandes rsync ne sont
sauvegardées, alors qu'elles sont visibles lorsque j'appelle save.sh en
ligne de commande
je ne comprends pas pourquoi.
peut etre pourriez vous m'aider?
bien cordialement

Matthieu


Re: redirection sortie standard

2006-05-29 Par sujet Yves Rutschle
On Mon, May 29, 2006 at 11:06:24PM +0200, Matthieu wrote:
 0 0 * * * $HOME/scripts/save.sh  $HOME/logs/save.log

Attention,  rajoute à la fin du fichier, donc save.log va
croitre sans fin.

 lorsque je lance cette crontab, j'ai plusieurs centaines de lignes de
 sorties.
 
[...]
 
 mais le fichier de log generé par la crontab ne contient que trois lignes,
 chacune des lignes est generé par le script persona_save correspondant

Je ne comprend pas ces deux phrases, elles me paraissent
contradictoires. Il y a plusieurs centaines de lignes, ou
bien 3 lignes?

 mais aucune des sorties realisées par le commandes rsync ne sont
 sauvegardées, alors qu'elles sont visibles lorsque j'appelle save.sh en
 ligne de commande

peut-être rsync écrit-il sur stderr, auquel cas il faut
rediriger stderr au lieu de stdout:
save.sh 2 save.log

Y.


-- 
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 [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: redirection sortie standard

2006-05-29 Par sujet Florent Bayle
Le Lundi 29 Mai 2006 23:34, Yves Rutschle a écrit :
 On Mon, May 29, 2006 at 11:06:24PM +0200, Matthieu wrote:
  0 0 * * * $HOME/scripts/save.sh  $HOME/logs/save.log

 Attention,  rajoute à la fin du fichier, donc save.log va
 croitre sans fin.

Il serait peut-être bon d'utiliser logrotate.


  lorsque je lance cette crontab, j'ai plusieurs centaines de lignes de
  sorties.

 [...]

  mais le fichier de log generé par la crontab ne contient que trois
  lignes, chacune des lignes est generé par le script persona_save
  correspondant

 Je ne comprend pas ces deux phrases, elles me paraissent
 contradictoires. Il y a plusieurs centaines de lignes, ou
 bien 3 lignes?

  mais aucune des sorties realisées par le commandes rsync ne sont
  sauvegardées, alors qu'elles sont visibles lorsque j'appelle save.sh en
  ligne de commande

 peut-être rsync écrit-il sur stderr, auquel cas il faut
 rediriger stderr au lieu de stdout:
 save.sh 2 save.log

Je pense qu'il veut rediriger les deux, et donc je ferais comme ceci :
0 0 * * * $HOME/scripts/save.sh 21  $HOME/logs/save.log

-- 
Florent


pgpw9plWHdIyD.pgp
Description: PGP signature


Re: redirection sortie standard

2006-05-29 Par sujet Matthieu
bonjour Yves



Yves Rutschle a écrit:

  mais le fichier de log generé par la crontab ne contient que trois lignes,chacune des lignes est generé par le script persona_save correspondant
  Je ne comprend pas ces deux phrases, elles me paraissentcontradictoires. Il y a plusieurs centaines de lignes, oubien 3 lignes?


quand je lance save.sh en ligne de commande j'ai plusieurs centaines de lignes. mais la crontab ne m'en genere que 3.




  
  mais aucune des sorties realisées par le commandes rsync ne sontsauvegardées, alors qu'elles sont visibles lorsque j'appelle save.sh enligne de commande
  peut-être rsync écrit-il sur stderr, auquel cas il fautrediriger stderr au lieu de stdout:save.sh 2 save.log


cela m'etonnes car si je fais 


$HOME/scripts/personal_save_gaim.sh  $HOME/logs/save.log, j'ai bien le log attendu...

ca me laisse perplexe...




Matthieu