GNU/Linux >> Belajar Linux >  >> Linux

Mengirim email dari skrip shell linux

Jika Anda menginginkan pendekatan yang bersih dan sederhana di bash, dan Anda tidak ingin menggunakan cat , echo , dll., cara paling sederhana adalah:

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

<<< digunakan untuk mengarahkan input standar. Sudah menjadi bagian dari bash sejak lama.


Jika exim dan ssmtp berjalan, Anda dapat mengalami masalah. Jadi, jika Anda hanya ingin menjalankan MTA sederhana, hanya untuk memiliki klien smtp sederhana untuk mengirim pemberitahuan email untuk desakan, Anda harus menghapus MTA yang akhirnya diinstal sebelumnya seperti exim atau postfix pertama dan instal ulang ssmtp.

Kemudian cukup mudah, hanya mengonfigurasi 2 file (revaliases dan ssmtp.conf) - Lihat ssmtp doc - , dan penggunaan dalam skrip bash atau bourne Anda seperti:

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

Tentunya jangan lupa untuk membuka keluaran firewall Anda ke port smtp (25).


Opsi lain untuk skrip 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
  • Berkas /tmp/mailtest ditimpa setiap kali skrip ini digunakan.
  • Lokasi sendmail mungkin berbeda untuk setiap sistem.
  • Saat menggunakan ini dalam skrip cron, Anda harus menggunakan jalur absolut untuk perintah sendmail.

Jika server dikonfigurasi dengan baik, misalnya memiliki MTA yang aktif dan berjalan, Anda cukup menggunakan perintah mail.

Misalnya, untuk mengirim konten file, Anda dapat melakukan ini:

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

man mail untuk detail lebih lanjut.


Linux
  1. Script Shell Hang Pada Perintah Mail?

  2. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  3. Menambahkan pengguna ke sudoer melalui skrip shell

  1. Bagaimana cara menyisipkan baris baru di skrip shell Linux?

  2. Skrip transliterasi untuk shell linux

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?

  1. Kirim email dari terminal atau skrip linux menggunakan perintah email

  2. linux shell wc -c hitung karakter +1

  3. Membaca email dari /var/spool/mail/root