GNU/Linux >> Linux Esercitazione >  >> Linux

Invio di una mail da uno script della shell Linux

Se vuoi un approccio pulito e semplice in bash e non vuoi usare cat , echo , ecc., il modo più semplice sarebbe:

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

<<< viene utilizzato per reindirizzare l'input standard. Fa parte di bash da molto tempo.


Se sono in esecuzione sia exim che ssmtp, potresti avere dei problemi. Quindi, se vuoi solo eseguire un semplice MTA, solo per avere un semplice client smtp per inviare notifiche e-mail per insistenza, devi eliminare l'MTA eventualmente preinstallato come exim o postfix prima e reinstallare ssmtp.

Quindi è abbastanza semplice, configurando solo 2 file (revaliases e ssmtp.conf) - Vedi ssmtp doc - e l'utilizzo nel tuo script bash o bourne è come :

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

Ovviamente non dimenticare di aprire l'output del tuo firewall alla porta smtp (25).


Un'altra opzione per in uno 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
  • Il file /tmp/mailtest viene sovrascritto ogni volta che viene utilizzato questo script.
  • La posizione di sendmail può variare a seconda del sistema.
  • Quando lo usi in uno script cron, devi usare il percorso assoluto per il comando sendmail.

Se il server è ben configurato, ad esempio ha un MTA attivo e funzionante, puoi semplicemente usare il comando mail.

Ad esempio, per inviare il contenuto di un file, puoi fare questo:

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

man mail per maggiori dettagli.


Linux
  1. UNIX / Linux :Qual è il permesso corretto delle directory /tmp e /var/tmp

  2. Esegui uno script reindirizzato da stdin (Linux/Shell Scripting)

  3. Come inserire una nuova riga nello script della shell di Linux?

  4. Script di traslitterazione per shell linux

  5. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Directory Linux tmp:tutto ciò che devi sapere

Aggiunta di utenti ai sudoer tramite script di shell

Aggiungi una riga al file /etc/hosts con lo script della shell

inviare posta dal terminale Linux in una riga

linux shell wc -c conta caratteri +1

Leggere la posta da /var/spool/mail/root