Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink


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