#1 Le 07/03/2015, à 11:32
- langevert74
[résolu] Cron, SSH, et envoi de mail
Bonjour,
J'aimerai avoir quelques explications sur un sujet.
Je souhaite exécuter un script avec une tâche CRON et recevoir un mail uniquement si une erreur a été rencontrée.
Soit la tâche cron définie comme cela (pour rediriger la sortie stdout vers /dev/null mais pas stderr):
19 10 * * * root /root/monScript.bash > /dev/null
Soit le script suivant:
#!/bin/bash
ls -l /
Le script exécute normalement (sans erreur) et je ne reçois donc aucun mail.
Si maintenant je modifie le script par le suivant (en supposant que /toto n'existe pas):
#!/bin/bash
ls -l /toto
Le script s'exécute avec une erreur et je reçois un mail de notification (ls: impossible d'accéder à /toto: Aucun fichier ou dossier de ce type)
Jusque là, tout est normal. Cependant, dès que j'utilise des commandes SSH, le comportement est différent.
Soit le script suivant:
#!/bin/bash
ssh -p 22 root@myserver.fr "ls -l /root"
Le script exécute normalement (sans erreur) :
- La connexion SSH est bien établie
- Le dossier /root existe bien sur le serveur distant (d'ailleurs le résultat de ls -l est bien retourné
Pourtant un mail est envoyé (malgré le > /dev/null dans le crontab). Le mail contient le contenu du résultat de la commande SSH (et l'entête de connexion SSH).
Comment éviter ce problème?
Merci d'avance pour vos réponses.
Dernière modification par langevert74 (Le 08/03/2015, à 13:24)
Ubuntu 11.04
Hors ligne
#2 Le 07/03/2015, à 20:42
- quaego
Re : [résolu] Cron, SSH, et envoi de mail
Bonjour,
De mémoire la bannière SSH est émise sur stderr, d'où le mail sans doute. Donc avoir quelque chose du genre :
#!/bin/bash
ssh -p 22 root@myserver.fr "ls -l /root" 2>/dev/null || echo "Erreur durant la commande SSH" >&2
ou
#!/bin/bash
ssh -p 22 root@myserver.fr "ls -l /root" 2>/dev/null
if [ $? -ne 0 ]; then
# Actions si erreur
fi
Dernière modification par quaego (Le 08/03/2015, à 21:37)
Hors ligne
#3 Le 08/03/2015, à 13:23
- langevert74
Re : [résolu] Cron, SSH, et envoi de mail
Bonjour,
Merci pour la piste : Effectivement, après vérification, la bannière SSH est bien émise sur stderr.
Pour éviter ce problème, voici la solution que j'ai trouvée:
ssh -p 22 root@myserver.fr -o LogLevel=Error "ls -l /root"
Merci à quaego
Ubuntu 11.04
Hors ligne
#4 Le 08/03/2015, à 21:40
- quaego
Re : [résolu] Cron, SSH, et envoi de mail
Bonjour,
De rien, content que ça marche. Et merci pour le retour avec l'option "LogLevel", intéressant comme autre solution.
(J'ai ajouté le ">&2" que j'avais oublié dans ma première suggestion pour avoir la sortie de "echo" dans stderr).
Hors ligne