web-dev-qa-db-fra.com

Comment configurer Cron pour envoyer des emails?

La commande cron job suivante est exécutée une fois par jour sur mon périphérique NAS:

find /nfs/rpiggott/complete -mtime +45 -exec rm {} \;

Je me demande s’il existe un moyen de rediriger une liste de manière à ce que le cron m'envoie un e-mail me montrant le fichier supprimé et/ou les erreurs éventuelles.

5
Ron Piggott

Pour cela, votre système devrait pouvoir envoyer des courriels. Ainsi, vous pourriez installer et configurer postfixname __ :

Sudo apt install postfix
  • Pour Type général de configuration du courrier , choisissez Site Internet , si vous souhaitez effectuer une configuration plus détaillée, utilisez la commande suivante:

    Sudo dpkg-reconfigure postfix
    

À ce stade, Cron commencera à envoyer des courriels. Tout ce qui sera généralement envoyé à STDOUT (si vous exécutez une commande dans la ligne de commande), y compris tous les messages d'erreur, sera envoyé à la boîte aux lettres locale de l'utilisateur qui exécute le Cronjob.

L'emplacement par défaut des boîtes aux lettres de l'utilisateur local est /var/mail/. Vous pouvez installer le client de messagerie en ligne de commande muttpour lire le courrier électronique de votre utilisateur via la ligne de commande de manière pratique:

Sudo apt install mutt
  • Remarque Le processus d'installation de muttimplique l'installation et la configuration de postfixsi cela n'a pas été fait auparavant.

Vous pouvez modifier la boîte aux lettres de destination par défaut en modifiant la valeur de la variable env nom MAILTO_ au sein de crontabname__, avant la définition du travail cron.

Remarque: à moins que vous n'ayez activé le certificat SSL/TLS dans votre configuration de messagerie, la plupart des serveurs de messagerie publics ignoreront vos messages d'une manière ou d'une autre. Par exemple, mail.google.com les mettra dans le spam. S'il s'agit d'une instance de serveur et que vous disposez déjà d'un certificat SSL/TLS pour votre domaine principal, suivez ce manuel de Nice pour le joindre à Postfix.

Une fois que votre système est capable d’envoyer des courriels, vous devez rendre votre travail Cronjob plus détaillé (par exemple, ajoutez -v à la commande rmname__) et définissez la valeur correcte de MAILTOname__. . Donc, votre crontabdevrait ressembler à ceci:

MAILTO="[email protected]"
* * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \;

Une autre approche consiste à créer un script (qui sera exécuté via crontabname__) qui inclut votre commande et utilise mailname__, muttname__, ssmtpou sendmailpour envoyer des courriels. Voir le bas des références pour plus de détails.


Références et lectures complémentaires:

4
pa4080

J'ai utilisé une méthode assez simple pour que cronenvoie des courriels: sauvegarde de la configuration Linux, des scripts et des documents vers Gmail .

Le moyen le plus simple d'automatiser l'envoi de courrier électronique

De envoyer des alertes par e-mail à l'aide de ssmtp nous trouvons le moyen le plus simple d'envoyer des e-mails automatisés à partir d'un terminal ou d'un script. Les étapes d'installation sont simples:

Sudo apt install ssmtp
Sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.

Il y a une étape non mentionnée; Google vous enverra un e-mail confirmant que vous souhaitiez autoriser une application "moins sécurisée" à envoyer des e-mails avec votre compte:

gmail turns on less secure apps for email

Il y a une contrariété à recevoir trop de courrier. Par exemple, chaque fois que vous entrez un mot de passe incorrect pour Sudoname__, vous recevrez un email: Arrêtez de m'envoyer de mauvaises tentatives de mot de passe Sudo

2
WinEunuuchs2Unix