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 :

[Cron] Problème d’exécution de script


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut [Cron] Problème d’exécution de script
    Bonjour,

    Je rencontre un petit problème sur un script vérifiant l'espace disque utilisé sur chaque partition du système et envoyant un mail d'alerte lorsqu'un certain seuil est dépassé.

    Voici le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    seuil=90
     
    for partition in /dev/sda1 /dev/sda2 /dev/sda3
    do
    	df=`df -h $partition`
    	p_utilise=`echo $df | cut -f14 -d ' '`
    	p_utilise2=${p_utilise:0:2}
    	if [ $p_utilise2 -gt $seuil ]
    	then
    		t_partition=`echo $df | cut -f11 -d ' '`
    		e_utilise=`echo $df | cut -f12 -d ' '`
    		e_restant=`echo $df | cut -f13 -d ' '`
    		corps="Bonjour,\n\nL'espace disque actuellement disponible sur la partition $partition a dépassé le seuil d'alerte de $seuil %.\n\nTaille de la partition : $t_partition\nEspace utilisé : $e_utilise\nEspace restant : $e_restant\n\nCordialement,\n--\n*****"
    		echo -e $corps | mail -s "Alerte : Espace disque" -a "From: *****<*****@*******.fr>" admin@********.fr
    	fi
    done
    Lorsque j’exécute le script à la main tout fonctionne cependant lorsque le script est exécute via le cron je ne reçoit aucun mail d'alerte.

    En mettant /bin/df et /usr/bin/mail le problème est toujours présent.

    Johan

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    mail a sans doute besoin de connaitre quel compte de mail utiliser (option -u) sachant que par le cron il n'est associé à aucun compte utilisateur.

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    J'ai oublié de préciser que j'ai d'autres scripts qui tournent sur ce serveur (configurés pour envoyer des mails de la même manière) qui fonctionnent via le cron.

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Il me semble que le caractère "%" doit être protégé dans cron.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le seuil d'alerte de $seuil \%.\n\n
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Cela n'a rien changé =(

    Pour précision ; voici la crontab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    */1 * * * * /scripts/Test_Disque.sh

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par Johan_A Voir le message
    J'ai oublié de préciser que j'ai d'autres scripts qui tournent sur ce serveur (configurés pour envoyer des mails de la même manière) qui fonctionnent via le cron.
    Peut être alors que dans ta crontab, ceux qui marchent sont associés à un compte utilisateur particulier ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Ils sont tous lancés en root.

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    T'as essayé de mettre les chemins absolus pour chaque commande ?

    Les autres scripts sont construits de la même façon (sans les chemins absolus) ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    et avec un shebang en début de fichier puis en contrôlant chmod o+x ... ?

    #!/bin/bash
    ...

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    J'ai mis df et mail en chemin absolu, y'a-t-il une autre commande à faire de même ?

    Il y a "#!/bin/bash" en ère ligne de fichier et j'ai mis les droits en 777

    Tous les autres scripts sont faits de la même façon.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    lol ... et sinon tu n'aurais pas un message d'erreur dans tes logs (dmesg .... )



    ?

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    syslog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Jun 12 15:31:01 Serveur /USR/SBIN/CRON[11999]: (root) CMD (/scripts/Test_Disque.sh)
    Jun 12 15:31:01 Serveur postfix/pickup[11803]: 2A78F36A527: uid=0 from=<root>
    Jun 12 15:31:01 Serveur postfix/cleanup[11603]: 2A78F36A527: message-id=<20120612133101.2A78F36A527@Serveur.domaine-ad.int>
    Jun 12 15:31:01 Serveur postfix/qmgr[26243]: 2A78F36A527: from=<root@Serveur.domaine-ad.int>, size=725, nrcpt=1 (queue active)
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11705]: accepted connection
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11705]: lmtp connection preauth'd as postman
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11705]: verify_user(Serveur.domaine-ad.int!user.Serveur) failed: Mailbox does not exist
    Jun 12 15:31:01 Serveur postfix/lmtp[11774]: 2A78F36A527: to=<Serveur@Serveur.domaine-ad.int>, orig_to=<root>, relay=Serveur.domaine-ad.int[/cyrussock/lmtp], delay=0.03, delays=0.02/0/0/0.01, dsn=5.1.1, status=bounced (host Serveur.domaine-ad.int[/cyrussock/lmtp] said: 550-Mailbox unknown.  Either there is no mailbox associated with this 550-name or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command))
    Jun 12 15:31:01 Serveur postfix/cleanup[11831]: 2FA0B36A4C6: message-id=<20120612133101.2FA0B36A4C6@Serveur.domaine-ad.int>
    Jun 12 15:31:01 Serveur postfix/bounce[11132]: 2A78F36A527: sender non-delivery notification: 2FA0B36A4C6
    Jun 12 15:31:01 Serveur postfix/qmgr[26243]: 2A78F36A527: removed
    Jun 12 15:31:01 Serveur postfix/qmgr[26243]: 2FA0B36A4C6: from=<>, size=2968, nrcpt=1 (queue active)
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11912]: accepted connection
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11912]: lmtp connection preauth'd as postman
    Jun 12 15:31:01 Serveur cyrus/lmtpunix[11912]: verify_user(Serveur.domaine-ad.int!user.Serveur) failed: Mailbox does not exist
    Jun 12 15:31:01 Serveur postfix/lmtp[11777]: 2FA0B36A4C6: to=<Serveur@Serveur.domaine-ad.int>, orig_to=<root@Serveur.domaine-ad.int>, relay=Serveur.domaine-ad.int[/cyrussock/lmtp], delay=0.03, delays=0.01/0/0/0.01, dsn=5.1.1, status=bounced (host Serveur.domaine-ad.int[/cyrussock/lmtp] said: 550-Mailbox unknown.  Either there is no mailbox associated with this 550-name or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command))
    Jun 12 15:31:01 Serveur postfix/qmgr[26243]: 2FA0B36A4C6: removed
    On vois bien que le script est en erreur puisqu'il essaie d'envoyé un mail à root

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par Johan_A Voir le message
    On vois bien que le script est en erreur puisqu'il essaie d'envoyé un mail à root
    si ce n'est dans le crontab, ni avec l'option -u de mailbox .... c'est que les cron qui marchent utilisent "su" ...

  14. #14
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Je ne comprend pas :s

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Ton mail a besoin d'un compte utilisateur (une boite mail) ou ton message sera mis en "boite d'envoi" avant d'être envoyé par ta messagerie. Il me semble logique que root n'en ait pas. Donc à chaque fois que tu veux envoyer un mail par cron il est indispensable d'indiquer un compte utilisateur dont on utilisera la "boite d'envoi"
    - soit dans le crontab (et dans ce cas tout le script s'exécute avec les droits de l'utilisateur marcel)
    - soit avant la commande mail : - soit dans la commande mail :

  16. #16
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    Ton mail a besoin d'un compte utilisateur (une boite mail) ou ton message sera mis en "boite d'envoi" avant d'être envoyé par ta messagerie. Il me semble logique que root n'en ait pas. Donc à chaque fois que tu veux envoyer un mail par cron il est indispensable d'indiquer un compte utilisateur dont on utilisera la "boite d'envoi"
    Tous mes autres scripts n’utilisent pas de boite mail pour envoyer un mail et c'est root qui les envoi.

    De plus le script marche lorsque je l’exécute manuellement.

    - soit dans le crontab (et dans ce cas tout le script s'exécute avec les droits de l'utilisateur marcel)
    - soit avant la commande mail :
    En ajoutant cette configuration le script n'envoi toujours pas de mail d'alerte par contre je n'ai effectivement plus les erreurs dans le syslog, il ne reste plus que :

    Jun 12 16:09:01 Serveur/USR/SBIN/CRON[13067]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete)
    Jun 12 16:09:01 Serveur/USR/SBIN/CRON[13076]: (root) CMD (/scripts/Test_Disque.sh)
    Avec donc la première ligne en plus par rapport à avant.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Pour "la première ligne" il s'agit vraissemblablement d'un autre cron ... ou que tu as cassé ton crontab

    j'ai du mal à croire ... au regard des messages de postfix ... qu'il existe un compte mail pour root.

    sinon essaye avec mail -u ...

  18. #18
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 5
    Points
    5
    Par défaut
    sinon essaye avec mail -u ...
    C'est ce que j'ai fait, c'est avec ça que je n'est plus d'erreur dans le syslog.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    oki ... donc a priori tu as un mail coincé quelque part .... soit en boite d'envoi de postix ... soit en réception du destinataire.

  20. #20
    Invité
    Invité(e)
    Par défaut
    Salut,

    Peux-tu fournir les variables d'environnements de ton shell ainsi que celui de ta crontab stp?

    Dans ton shell, taper la commande suivante:

    Pour voir les variables d'environnement de la crontab, ajouter la même commande dans ton script Test_Disque.sh et rediriger l'ouput vers un fichier temporaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /usr/bin/env > /tmp/env_crontab.txt

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème python dans script shell et cron
    Par Tintin87 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/11/2011, 22h29
  2. Réponses: 4
    Dernier message: 24/05/2011, 13h42
  3. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56
  4. Problème avec un script d'ouverture de pop-up
    Par HNT dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/08/2005, 16h37
  5. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51

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