Salut à tous,

J'ai crée un script en bash pour tester si la température de mes processeurs ne dépasse pas un certain seuil, je l'ai testé manuellement et fonctionne correctement mais quand je le mets dans un cron il ne se passe rien, je ne sais pas si vous avez une idée comment régler ça.

Voici le script:
#!/bin/bash
# Script sert a relever les temperatures des processeurs automatiquement, si temperature trop elevee eteindre ordi. et envoyer un message.

TempLimit=30

PROC0=1
PROC1=2
PROC2=3
PROC3=4
PROC4=5
PROC5=6
PROC6=7
PROC7=8


TEMP1=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "1 p") 
TEMP2=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "2 p")
TEMP3=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "3 p") 
TEMP4=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "4 p")
TEMP5=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "5 p") 
TEMP6=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "6 p")
TEMP7=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "7 p") 
TEMP8=$(sensors | grep Core | cut -d":" -f2 | tr -d ' °C' | cut -c 1-3 | sed -n "8 p")
 
echo "La temperature du process $PROC0 est: $TEMP1 C"
echo "La temperature du process $PROC1 est: $TEMP2 C"
echo "La temperature du process $PROC2 est: $TEMP3 C"
echo "La temperature du process $PROC3 est: $TEMP4 C"
echo "La temperature du process $PROC4 est: $TEMP5 C"
echo "La temperature du process $PROC5 est: $TEMP6 C"
echo "La temperature du process $PROC6 est: $TEMP7 C"
echo "La temperature du process $PROC7 est: $TEMP8 C"


if [[ $TEMP1 -gt $TempLimit || $TEMP2 -gt $TempLimit || $TEMP3 -gt $TempLimit || $TEMP4 -gt $TempLimit || $TEMP5 -gt $TempLimit || $TEMP6 -gt $TempLimit || $TEMP7 -gt $TempLimit || $TEMP8 -gt $TempLimit ]];
    then 
        echo  Temperature du process $TEMP1=$TempLimit C : $TEMP2=$TempLimit C : $TEMP3=$TempLimit C : $TEMP4=$TempLimit C $TEMP5=$TempLimit C : $TEMP6=$TempLimit C : $TEMP7=$TempLimit C : $TEMP8=$TempLimit C
depassant le seuil de: $TempLimit C trop elevee, machine eteinte le: `date`| /bin/mail -s 'CheckUP temperature du processuer' nedjarh@hotmail.com
#eteindre la machine
halt -p

fi
J'ai fixé exprés le limite à 30 degrés pour que la machine s'éteigne mais ne se passe rien, bien que quand je l'exécute manuellement elle s'éteigne.

Et voici mon cron:
*/3 * * * * /home/hacene/bin/temperature_process.sh > /dev/null

Merci de votre aide.

PS: Mon cron est bien activé car j'ai déjà un autre script qui fait un backup de mes fichiers et qui fonctionne correctement.
Tu veux dire que rien ne s'affiche, le mail n'est pas envoyé, et la machine n'est pas éteinte ?

Je vois déjà qu'en début de script tu ne fixes pas la valeur de $PATH et que peut-être le script ne trouve pas les commandes "mail" ni "halt".
nouvo09 wrote:Tu veux dire que rien ne s'affiche, le mail n'est pas envoyé, et la machine n'est pas éteinte ?

Je vois déjà qu'en début de script tu ne fixes pas la valeur de $PATH et que peut-être le script ne trouve pas les commandes "mail" ni "halt".
Oui c'est ça, la machine devrait s'éteindre et je reçois un email qui m'explique pourquoi la machine s'est éteinte, en tout cas quand je l'exécute manuellement la machine s'éteind et je reçois bien l'email.

Pour le $PATH, je pensais pas que c'est important de le définir dans le script du moment que dans le cron le path est bien spécifié, non?

Merci de ton aide.
Ca te coute quoi d'essayer? Je ne suis pas sur que cron exporte ses variables.

Ou sinon écris tes commandes sous la forme chemin absolu par exemple:

/usr/bin/mail blablabla
/bin/shutdown -p blablabla
Sinon un source /home/user/.bashrc ou un truc dans le genre peut au mieux charger certaines variables d'environnement.