GNU/Linux >> Tutoriels Linux >  >> Linux

Envoi d'un mail à partir d'un script shell Linux

Si vous voulez une approche propre et simple dans bash, et que vous ne voulez pas utiliser cat , echo , etc., le moyen le plus simple serait :

mail -s "subject here" [email protected] <<< "message"

<<< est utilisé pour rediriger l'entrée standard. Il fait partie de bash depuis longtemps.


Si exim et ssmtp sont en cours d'exécution, vous pouvez rencontrer des problèmes. Donc, si vous voulez juste exécuter un simple MTA, juste pour avoir un simple client smtp pour envoyer des notifications par e-mail en cas d'insistance, vous devez purger le MTA éventuellement préinstallé comme exim ou suffixe d'abord et réinstallez ssmtp.

Ensuite, c'est assez simple, en configurant seulement 2 fichiers (revaliases et ssmtp.conf) - Voir doc ssmtp - , et l'utilisation dans votre script bash ou bourne est comme :

#!/bin/sh  
SUBJECT=$1  
RECEIVER=$2  
TEXT=$3  

SERVER_NAME=$HOSTNAME  
SENDER=$(whoami)  
USER="noreply"

[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"  
[[ -z $2 ]] && RECEIVER="another_configured_email_address"   
[[ -z $3 ]] && TEXT="no text content"  

MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"  
echo -e $MAIL_TXT | sendmail -t  
exit $?  

N'oubliez évidemment pas d'ouvrir la sortie de votre pare-feu sur le port smtp (25).


Une autre option pour dans un script bash :

mailbody="Testmail via bash script"
echo "From: [email protected]" > /tmp/mailtest
echo "To: [email protected]" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
  • Le fichier /tmp/mailtest est écrasé à chaque fois que ce script est utilisé.
  • L'emplacement de sendmail peut varier d'un système à l'autre.
  • Lorsque vous l'utilisez dans un script cron, vous devez utiliser le chemin absolu pour la commande sendmail.

Si le serveur est bien configuré, par exemple s'il dispose d'un MTA opérationnel, vous pouvez simplement utiliser la commande mail.

Par exemple, pour envoyer le contenu d'un fichier, vous pouvez faire ceci :

$ cat /path/to/file | mail -s "your subject" [email protected]

man mail pour plus de détails.


Linux
  1. Envoyer un e-mail à partir d'un terminal Linux ou d'un script à l'aide de la commande mail

  2. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  3. Comportement inattendu d'un script shell ?

  4. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  5. UNIX / Linux :Quelle est la bonne permission des répertoires /tmp et /var/tmp

Répertoire Linux tmp :tout ce que vous devez savoir

Comment insérer une nouvelle ligne dans le script shell Linux ?

Script de translittération pour le shell Linux

Comment changer /tmp par défaut en /home/user/tmp

Lire le courrier de /var/spool/mail/root

Différence et utilisation correcte pour /tmp et /var/tmp