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?

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="user.one@domain.one,user.two@domain.two"

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.


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: fred@example.com, george@example.com2. 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.


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.


0

Tambahkan ,setelah setiap email, misalnya:MAILTO="some.user1@example.com,some.user2@example.com"


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.