GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Senden einer E-Mail von einem Linux-Shell-Skript

Wenn Sie einen sauberen und einfachen Ansatz in Bash wünschen und cat nicht verwenden möchten , echo , etc., wäre der einfachste Weg:

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

<<< wird verwendet, um die Standardeingabe umzuleiten. Es ist seit langem ein Teil von bash.


Wenn sowohl exim als auch ssmtp laufen, kann es zu Problemen kommen. Wenn Sie also nur einen einfachen MTA ausführen möchten, nur um einen einfachen SMTP-Client zum Senden von E-Mail-Benachrichtigungen auf Drängen zu haben, müssen Sie den eventuell vorinstallierten MTA wie exim löschen oder postfix zuerst und installieren Sie ssmtp neu.

Dann ist es ganz einfach, nur 2 Dateien (revaliases und ssmtp.conf) zu konfigurieren - siehe ssmtp doc - , und die Verwendung in Ihrem Bash- oder Bourne-Skript ist wie folgt:

#!/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 $?  

Vergessen Sie natürlich nicht, Ihre Firewall-Ausgabe auf den SMTP-Port (25) zu öffnen.


Eine weitere Option für ein Bash-Skript:

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
  • Die Datei /tmp/mailtest wird jedes Mal überschrieben, wenn dieses Skript verwendet wird.
  • Der Speicherort von sendmail kann je nach System unterschiedlich sein.
  • Wenn Sie dies in einem Cron-Skript verwenden, müssen Sie den absoluten Pfad für den sendmail-Befehl verwenden.

Wenn der Server gut konfiguriert ist, zB einen betriebsbereiten MTA hat, können Sie einfach den mail-Befehl verwenden.

Um beispielsweise den Inhalt einer Datei zu senden, können Sie Folgendes tun:

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

man mail für weitere Details.


Linux
  1. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  2. UNIX/Linux:Was ist die korrekte Berechtigung für die Verzeichnisse /tmp und /var/tmp?

  3. Senden von HTML-Mails mit einem Shell-Skript

  4. Zeile mit Shell-Skript an die Datei /etc/hosts anhängen

  5. E-Mail vom Linux-Terminal in einer Zeile senden

Linux-tmp-Verzeichnis:Alles, was Sie wissen müssen

Wie füge ich eine neue Zeile in ein Linux-Shell-Skript ein?

Transliterationsskript für die Linux-Shell

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

So ändern Sie das Standard-/tmp in /home/user/tmp

Unterschied und korrekte Verwendung für /tmp und /var/tmp