Làm thế nào để gửi đầu ra từ một cronjob đến nhiều địa chỉ email?


55

Khi bắt đầu tập tin crontab, bạn có thể sử dụng MAILTOhướng dẫn để cho biết bạn muốn đầu ra được gửi dưới dạng e-mail đến địa chỉ e-mail. Tôi muốn gửi đầu ra đến nhiều địa chỉ. Có thể (và làm thế nào) để chỉ định nhiều địa chỉ?

Câu trả lời:


72

Nó có thể khác nhau tùy thuộc vào chính xác gói cron daemon bạn sử dụng, nhưng đây là từ trang chủ của Vixie Cron trên Ubuntu Hardy:

Nếu MAILTO được xác định (và không trống), thư sẽ được gửi cho người dùng được đặt tên như vậy. MAILTO cũng có thể được sử dụng để gửi thư trực tiếp đến nhiều người nhận bằng cách phân tách người dùng người nhận bằng dấu phẩy. Nếu MAILTO được xác định nhưng trống (MAILTO = ""), sẽ không có thư nào được gửi. Nếu không thư được gửi đến chủ sở hữu của crontab.

Nếu bạn không sử dụng Vixie Cron hoặc không chắc chắn, hãy thử trang thủ công cho tệp crontab: man 5 crontab

Thí dụ

MAILTO="user.one@domain.one,user.two@domain.two"

12
Một điều cần lưu ý - chỉ sử dụng dấu phẩy giữa các địa chỉ. Cũng không sử dụng một khoảng trắng, nếu không, cron sẽ ghi lại địa chỉ (có thể trong / var / log / cron hoặc / var / log / daemon) dưới dạng "UNSAFE" và sẽ từ chối gửi đến danh sách địa chỉ đó.
David Gardner

1
Khi tách địa chỉ với không gian thay vì dấu phẩy, nó đã xảy ra với tôi rằng crongửi mail đến địa chỉ đầu tiên chỉ (và crontabkhông hề phàn nàn khi lưu thay đổi, đó là một sự xấu hổ ). Có lỗi trong syslog ( (CRON) error (bad mailto)), nhưng không ai nhận thấy ...
Tobias

10

Thay thế cho các câu trả lời ở trên, bạn có thể gửi nó đến một địa chỉ duy nhất là một nhóm thư. Điều này đặc biệt hiệu quả nếu bạn quản lý nhiều máy chủ vì việc quản lý địa chỉ trong nhóm trên máy chủ thư sẽ dễ dàng hơn sau đó trong crontab của từng máy chủ.


IMHO đây là câu trả lời đúng. Ai muốn duy trì danh sách cá nhân của các địa chỉ email trong các crontabs khác nhau?
Satanicpuppy 3/214

Tôi đã tạo một danh sách đơn giản: 1. Là root, hãy thêm "người nhận ảo" vào /etc/aliasesbằng cách thêm một dòng như thế này: cron-listeners: fred@example.com, george@example.com2. Trong crontab, đặt MAILTO=cron-listenersNếu bạn không có quyền truy cập root, thì bạn có thể thử .forwardphương thức thay thế.
joeytwiddle

4

Một giải pháp có thể là một .forwardtệp trên tài khoản người dùng đó sẽ gửi thư đến các địa chỉ thích hợp.


1
+1 .forward file là cách để đi.
sleske

0

Câu trả lời tốt nhất có lẽ là kiểm tra các trang man của bạn để biết phiên bản hiện tại của cron / crontab của bạn để xem có điều gì có thể được thực hiện với tham số MAILTO hoặc chỉ định một địa chỉ thư lần lượt chuyển thư đến nhiều địa chỉ cho bạn không.


0

Thêm ,sau mỗi email, ví dụ:MAILTO="some.user1@example.com,some.user2@example.com"


3
Trong tài liệu, các e-mail được phân tách bằng dấu phẩy, bạn đang sử dụng dấu chấm phẩy ở đây. Bạn có chắc cú pháp này đang hoạt động?
vật lý

1
@MichaelHampton ;không hoạt động
030

@Alfred Tôi nhận thức rõ điều đó. Vậy là người khác đã bình luận!
Michael Hampton

1
@kasperd Vì không phù hợp để thay đổi ý nghĩa bài đăng của người khác. Đó là cho riêng poster, và cho đến nay anh ấy đã chọn không sửa nó. Thay vào đó, các câu trả lời sai nên được đánh giá thấp và bình luận.
Michael Hampton

1
Sửa bài của tôi. Không biết làm thế nào nó hoạt động trở lại vào năm 2010. Như @ThatGraemeGuy trong một bài viết ở trên. Có thể phụ thuộc vào gói Cron.
dannyb2100
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.