GNU/Linux >> Znalost Linux >  >> Linux

Odeslání pošty z linuxového shell skriptu

Pokud chcete čistý a jednoduchý přístup v bash a nechcete používat cat , echo , atd., nejjednodušší způsob by byl:

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

<<< slouží k přesměrování standardního vstupu. Je součástí bash po dlouhou dobu.


Pokud jsou spuštěny exim i ssmtp, můžete se dostat do problémů. Takže pokud chcete spustit jednoduchý MTA, jen mít jednoduchého smtp klienta pro zasílání e-mailových upozornění pro naléhání, musíte odstranit případně předinstalovaný MTA jako exim nebo postfix nejprve a znovu nainstalujte ssmtp.

Pak je to docela přímočaré, nakonfigurujete pouze 2 soubory (revaliases a ssmtp.conf) - Viz ssmtp doc - a použití ve vašem bash nebo bourne skriptu je podobné:

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

Samozřejmě nezapomeňte otevřít výstup brány firewall na port smtp (25).


Další možnost pro v bash skriptu:

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
  • Soubor /tmp/mailtest je přepsán při každém použití tohoto skriptu.
  • Umístění sendmailu se může v jednotlivých systémech lišit.
  • Když to použijete ve skriptu cron, musíte pro příkaz sendmail použít absolutní cestu.

Pokud je server dobře nakonfigurován, např. má spuštěný MTA, stačí použít příkaz mail.

Chcete-li například odeslat obsah souboru, můžete provést toto:

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

man mail pro více podrobností.


Linux
  1. Odesílání HTML pošty pomocí shell skriptu

  2. Jak vložit nový řádek do skriptu prostředí Linux?

  3. Transliterační skript pro linuxové prostředí

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Jak změnit výchozí /tmp na /home/user/tmp

  3. Rozdíl a správné použití pro /tmp a /var/tmp

  1. Odešlete e-mail z linuxového terminálu nebo skriptu pomocí příkazu mail

  2. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  3. Neočekávané chování skriptu Shell?