Bagaimana cara mengirim output dari cronjob ke beberapa alamat email?

55

Pada awal file crontab, Anda dapat menggunakan MAILTOinstruksi untuk menunjukkan Anda ingin output dikirim sebagai email ke alamat email. Saya ingin mengirim output ke beberapa alamat. Apakah mungkin (dan bagaimana) menentukan beberapa alamat?

Boas
sumber

Jawaban:

72

Ini mungkin berbeda tergantung pada paket daemon cron yang Anda gunakan, tetapi ini berasal dari halaman manual Vixie Cron di Ubuntu Hardy:

Jika MAILTO didefinisikan (dan tidak kosong), surat dikirim ke pengguna yang dinamai demikian. MAILTO juga dapat digunakan untuk mengarahkan surat ke banyak penerima dengan memisahkan pengguna penerima dengan koma. Jika MAILTO didefinisikan tetapi kosong (MAILTO = ""), tidak ada email yang akan dikirim. Kalau tidak, surat akan dikirim ke pemilik crontab.

Jika Anda tidak menggunakan Vixie Cron, atau tidak yakin, coba halaman manual untuk file crontab: man 5 crontab

Contoh

MAILTO="[email protected],[email protected]"
ThatGraemeGuy
sumber
12
Satu hal yang perlu diperhatikan - gunakan hanya koma di antara alamat. Jangan menggunakan spasi juga , jika tidak cron akan mencatat alamat (mungkin dalam / var / log / cron atau / var / log / daemon) sebagai "UNSAFE" dan akan menolak untuk mengirim ke daftar alamat tersebut.
David Gardner
1
Ketika memisahkan alamat dengan spasi alih - alih koma, kebetulan saya yang cronmengirim email ke alamat pertama saja (dan crontabtidak mengeluh ketika menyimpan perubahan, yang memalukan ). Ada kesalahan di syslog ( (CRON) error (bad mailto)), tetapi tidak ada yang memperhatikan ...
Tobias
11

Sebagai alternatif dari jawaban di atas, Anda dapat mengirim email ke satu alamat yang merupakan grup email atau daftar distribusi. Ini berfungsi baik terutama jika Anda mengelola beberapa server karena lebih mudah untuk mengelola alamat pada server email Anda daripada di crontab masing-masing mesin.

dtoubelis
sumber
IMHO ini adalah jawaban yang tepat. Siapa yang ingin mempertahankan daftar individual alamat email di berbagai crontab?
Satanicpuppy
Saya membuat daftar sederhana: 1. Sebagai root, tambahkan "penerima virtual" ke /etc/aliasesdengan menambahkan baris seperti ini: cron-listeners: [email protected], [email protected]2. Di crontab, atur MAILTO=cron-listenersJika Anda tidak memiliki akses root, maka Anda bisa mencoba .forwardmetode ini.
joeytwiddle
4

Satu solusi mungkin .forwardfile pada akun pengguna itu yang mengirim email ke alamat yang sesuai.

Matt Simmons
sumber
1
+1 .forward file adalah caranya.
sleske
0

Jawaban terbaik mungkin untuk memeriksa halaman manual Anda untuk versi cron / crontab distro Anda saat ini untuk melihat apakah ada sesuatu yang dapat dilakukan dengan parameter MAILTO atau menentukan alamat email yang kemudian mengirimkan email ke beberapa alamat untuk Anda.

Bart Silverstrim
sumber
0

Tambahkan ,setelah setiap email, misalnya:MAILTO="[email protected],[email protected]"

dannyb2100
sumber
3
Dalam dokumentasi, email dipisahkan oleh koma, Anda menggunakan tanda titik koma di sini. Apakah Anda yakin sintaks ini berfungsi?
physicalattraction
1
@MichaelHampton the ;tidak bekerja
030
@ Alfred Saya sangat sadar akan hal itu. Begitu juga orang lain yang berkomentar!
Michael Hampton
1
@kasperd Karena itu tidak tepat untuk mengubah arti posting orang lain. Itu untuk poster saja, dan sejauh ini dia memilih untuk tidak memperbaikinya. Jawaban yang salah harus diturunkan dan dikomentari sebagai gantinya.
Michael Hampton
1
Memperbaiki pos saya. Tidak tahu bagaimana ini bekerja kembali pada tahun 2010. Seperti @ThatGraemeGuy dalam posting di atas. Bisa tergantung pada paket Cron.
dannyb2100