IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Soucis avec cron.


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut Soucis avec cron.
    Bonjour,
    je me sert de Cron pour éxecuter un fichier bash qui lit une sonde de température
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # LECTURE DE LA SONDE DE TEMPERATURE TOUTES LES 2 MN
    */2	*	*	*	*	/home/sondetenphum.sh
    sondetenphum.sh:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    cd /home/Adafruit_Python_DHT/examples
    sudo ./AdafruitDHT.py 22 25
    cd /var/www/html/
    sudo php alarmetemp_03.php
    AdafruitDHT.py 22 25 --> lis et enregistre dans un fichier texte les valeur de la sonde.
    alarmetemp_03.php --> traite les valeurs de la sonde , à savoir (disont qu'il fait 20°) si la tempèrature est > ou = à 22° OU si la température est < ou = à 18° le script alarmetemp_03.php, envois un e-mail (ssmtp)
    le soucis est que si je rajoute ">/dev/null 2>&1" en fin de ligne, plus aucun e-mail ne sort, si je les enlève, la boite e-mail emétrice recoit un e-mail toutes les deux minutes , à chaque lecture de la sonde, ce qui est normal.
    Comment je pourrai modifier ma crontab afin de ne pas recevoir de mail dans les cas ou le script "alarmetemp_03.php" ne remplit pas les conditions d'envois..
    D'avance merci pour vos aides et idées.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    Bonjour,

    alarmetemp_03.php, envoie un e-mail (ssmtp)
    comment fait-il ?
    la boite e-mail emettrice recoit un e-mail toutes les deux minutes
    quel en est le contenu ?
    Comment je pourrais modifier ma crontab afin de ne pas recevoir de mail dans les cas où le script "alarmetemp_03.php" ne remplit pas les conditions d'envoi
    modifier le script pour qu'il n'envoie pas de mail si les conditions ne sont pas remplies !

    PS:
    pourquoi sondetenphum.sh, et pas sondetemphum.sh ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    Bonsoir,
    comment fait-il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ("sh /home/mailalarme/mailtropfroid.sh");
    quel en est le contenu ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Delivery to the following recipient failed permanently:
     
         user@testbox
     
    Technical details of permanent failure:
    DNS Error: 71103608 DNS type 'mx' lookup of testbox responded with code NXDOMAIN
    Domain name not found: testbox
    modifier le script pour qu'il n'envoie pas de mail si les conditions ne sont pas remplies !
    C'est déjà le cas, mon script n'envoie pas d'e-mail si les conditions ne sont pas remplies...

    pourquoi sondetenphum.sh, et pas sondetemphum.sh ?
    --> faute de frappe.

    Toutes mes excuses pour les fautes d'orthographe dues à une NON relecture de mon post.
    Cordialement.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ("sh /home/mailalarme/mailtropfroid.sh");
    quelques choses :
    • un script bien fait n'a pas besoin d'être exécuté par le shell, mais doit être exécutable
    • le script ne devrait-il pas avoir, en arguments, les arguments du php ?
      ah ben, non, le php n'a pas non plus accès aux données


    le mail est un message d'erreur Domain name not found: testbox. il semble que le serveur n'est pas correctement configuré !?

    un script shell qui exécute un script php, qui exécute un script shell...
    il n'y aurait pas un petit bout de code php dans ce dernier ?
    quel emboîtage ! KISS* !

    *Keep It Simple Stupid.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    quelques choses :
        un script bien fait n'a pas besoin d'être exécuté par le shell, mais doit être exécutable
    SUrement si vous les dites.
    le script ne devrait-il pas avoir, en arguments, les arguments du php ?
    ah ben, non, le php n'a pas non plus accès aux données
    Je sais qu'il est possible d'envoyer de beaux mail formatés etc... avec php mais je n'ai pas besoin de ça, juste d'un e-mail assez court pour remonter une bête alarme donc si mes scripts sont emboîtés de cette manière, c'est que je n'ai trouvé que cette possibilité pour faire fonctionner ma solution. Ce qui est le cas.
    Je peux solutionner en créant une règle dans le compte gmail qui reçoit tous les mails de "user@testbox" et les dropper directement dans la poubelle.

    Mais cela ne me convient pas donc je recherche des solutions d'amélioration sur les forum, avec l'aides des experts et cadors, ceux qui savent ! Je vous remercie donc pour la leçon d'orthographe, l'analyse et surtout les conclusions pertinentes démontrant la mauvaise conception de ma solution qui ceci dit est pleinement fonctionnelle !

    Comme vous êtes amateur de citation, acronyme en voilà une:
    "Le Progrès ne vaut que s'il est partagé par tous"

    Je vais me débrouiller avec mon code.
    Merci pour votre temps d'analyse.
    Bon week-end.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    si tu ne peux pas accepter les critiques, il ne faut pas demander d'aide !

    « KISS » n'est pas une insulte, c'est un principe de conception.

    C'est déjà le cas, mon script n'envoie pas d'e-mail si les conditions ne sont pas remplies...
    la preuve :
    Comment je pourrai modifier ma crontab afin de ne pas recevoir de mail dans les cas ou le script "alarmetemp_03.php" ne remplit pas les conditions d'envois..
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    KISS me parle, si vous lisiez correctement mon post c'est bien dans cette démarche que je m'inscrit. Dans le cas contraire je laisserai mes emboîtages fonctionner comme ils sont actuellement, ils font le taf. Je suis donc dans l'optimisation et la simplification de mes emboîtages.
    Quand à la critique je la supporte tous les jours de par mon métier, enfin quand elles est constructive, celle-ci peu faire avancer les choses. Je n'ai rien trouver de constructif dans vos différentes remarques:
    modifier le script pour qu'il n'envoie pas de mail si les conditions ne sont pas remplies !
    le script fonctionne, ce sont les paramètre ajoutés à la crontab qui posent problème...
    PS:
    pourquoi sondetenphum.sh, et pas sondetemphum.sh ?
    <-- critique constructive en effet !!!

    un script bien fait n'a pas besoin d'être exécuté par le shell, mais doit être exécutable
    Ah bon http://php.net/manual/fr/function.exec.php
    le script ne devrait-il pas avoir, en arguments, les arguments du php ?
    ah ben, non, le php n'a pas non plus accès aux données
    surement vrai mais incompréhensible pour un non expert.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le soucis est que si je rajoute ">/dev/null 2>&1" en fin de ligne, plus aucun e-mail ne sort, si je les enlève, la boite e-mail emétrice recoit un e-mail toutes les deux minutes , à chaque lecture de la sonde, ce qui est normal.
    C'est là que se situe mon problème et très certainement que je ne l'expose pas correctement.

    Mais laissez tomber, vous avez parfaitement compris mon problème. Vous et moi avons assez perdu de temps.

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par Loupita Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le soucis est que si je rajoute ">/dev/null 2>&1" en fin de ligne, plus aucun e-mail ne sort, si je les enlève, la boite e-mail emétrice recoit un e-mail toutes les deux minutes , à chaque lecture de la sonde, ce qui est normal.
    C'est là que se situe mon problème et très certainement que je ne l'expose pas correctement.
    Ce mail n'a peut-être rien à voir avec ce que fait (ou tente de faire) le programme.

    Il est normal de recevoir un mail chaque fois que la commande lancée par cron affiche un message d'erreur ou ne peut simplement pas être exécutée. Si la sortie d'erreur et la sortie standard est envoyée vers /dev/null et que le programme n'envoie pas de mail, normal qu'il n'y ait pas de mails envoyés.

    Il serait probablement utile de nous dire ce qu'il y a dans ces fameux mails !

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    Citation Envoyé par loupita
    Bonjour,
    Merci pour votre réponse, je ne peux pas répondre dans le topic, celui-ci ayant été fermé par un modérateur.
    Entre deux explications linguistiques et de forme avec N_BaH, j'ai modifié mes scripts en me servant de la fonction mail de php et non plus en utlisant bash pour les envoyer.
    Citation Envoyé par jlliagre
    Il est normal de recevoir un mail chaque fois que la commande lancée par cron affiche un message d'erreur ou ne peut simplement pas être exécutée.
    la crontab execute le bash suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    cd /home/Adafruit_Python_DHT/examples
    sudo ./AdafruitDHT.py 22 25
    cd /var/www/html/
    sudo php alarmetemp_03.php
    Et apparamment l'erreur concerne la lecture de la sonde le script .py j'ai supprimé ce qui me paraissait superflu dans le script Python ainsi que toutes les remarques, avec les modifications liées à la fonction mail de php, tout fonctionne correctement.
    Citation Envoyé par jlliagre
    Il serait probablement utile de nous dire ce qu'il y a dans ces fameux mails !
    Pour information voici le contenu du bash qui envoyait les e-mails avant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    # ENVOIS DU MAIL D'ALARME TROP CHAUD
    	echo "Hi, \n La temperature est trop haute.\n La lampe a été  éteinte. Contrlolez s'il vous plait." | mail -s "Temperature trop haute" ooops@tld.com
    Merci pour votre aide.
    Cordialement.
    effectivement, j'ai fermé le sujet, j'ai cru que tu avais fini :
    Citation Envoyé par loupita
    Mais laissez tomber [...] Vous et moi avons assez perdu de temps.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    bonjour,

    si j'ai bien compris le problème, pour ne pas recevoir un mail a chaque fois (puisqu'il marche?) il suffit que AdafruitDHT.py retourne la chaleur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    cd /home/Adafruit_Python_DHT/examples
    chaleur=$(sudo ./AdafruitDHT.py 22 25)
    if [ "$chaleur" -gt 20 ]; then
        cd /var/www/html/
        sudo php alarmetemp_03.php $chaleur
    fi

Discussions similaires

  1. Quelques soucis avec Cron
    Par Sowa dans le forum Administration système
    Réponses: 2
    Dernier message: 04/07/2008, 16h34
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo