/etc/cron.daily/foo: Czy wysłać e-mail do konkretnego użytkownika zamiast roota?


13

Używam CentOS 5.5.

Mamy kilka cronjobs zapisanych w /etc/cron.daily/. Chcielibyśmy, aby e-mail niektórych z tych cronjobs był kierowany na określony adres e-mail, a pozostałe e-maile w /etc/cron.daily/ powinny mieć domyślny adres e-mail (root @ localhost).

Cronjobs w /etc/cron.daily/ są uruchamiane z pliku / etc / crontab. / etc / crontab określa pole „MAILTO”. Czy mogę to zmienić, ustawiając MAILTO w moim /etc/cron.daily/foo cronjob?

Jaki jest najlepszy sposób, aby sobie z tym poradzić?


Uwaga dla użytkowników CentOS 6.5 (cronie): /etc/crontabnie określa wartości domyślnych.
Adam Monsen

Odpowiedzi:


13

Ustawianie MAILTO=user@example.orgw /etc/cron.daily/foonie działa. Dane wyjściowe skryptu nie są wysyłane na adres użytkownik@example.org.

Strona http://www.unixgeeks.org/security/newbie/unix/cron-1.html sugeruje również proste rozwiązanie:

Plik /etc/cron.daily/foozawiera teraz następujące elementy:

#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" stefanl@example.org

Spowoduje to wysłanie wiadomości e-mail na adres „stefanl@example.org” z tematem równym pełnej ścieżce skryptu (np /etc/cron.daily/foo.).

Oto, co na ten temat mówi Unixgeeks.org:

Wyjście z crona

Jak powiedziałem wcześniej, dane wyjściowe z crona są wysyłane pocztą do właściciela procesu lub osoby określonej w zmiennej MAILTO, ale co, jeśli tego nie chcesz? Jeśli chcesz wysłać dane wyjściowe do kogoś innego, możesz po prostu przesłać dane wyjściowe do poczty poleceń. na przykład

cmd | mail - użytkownik „Temat poczty”

Czasami chcę otrzymywać tylko błędy od kumpla, a nie od standardowego, więc używam tej sztuczki. Na pierwszy rzut oka składnia może wyglądać niepoprawnie, ale zapewniamy, że działa. Następujący cronjob wyśle ​​STDOUT do / dev / null, a następnie obsłuży STDERR przez potok.

doit 2>&1 >/dev/null | mailx -s "$0" stefanl@example.org

To samo, ale wyślij do syslog:

doit 2>&1 >/dev/null | /usr/bin/logger -t $ME

Zobacz także moją odpowiedź na ServerFault do Cronjob stderr na plik i e-mail


6

Bardziej eleganckim rozwiązaniem byłoby użycie /etc/cron.dbezpośrednio. Zamiast mieć skrypt w środku /etc/cron.daily, umieść go gdzieś jak, /usr/local/sbin/myscript.sha następnie utwórz plik /etc/cron.d/myscriptjako:

MAILTO=root,whomever@example.org
# run myscript.sh at 4:11 every day
11 4 * * * root /usr/local/sbin/myscript.sh

Daje to również o wiele większą kontrolę nad momentem wykonania zadania; na przykład tylko w niektóre dni powszednie itp. Zobacz crontab(5)mężczyznę, aby uzyskać więcej informacji.


0

Zakładając, że masz dostęp SA na tym komputerze, możesz utworzyć nowe konto użytkownika, dodać zadania do zadań cron tych kont. Poczta dla tego użytkownika może być następnie przekazana przy użyciu pliku .forward w tym folderze domowym kont. Może być konieczne skonfigurowanie uprawnień dla tego użytkownika, jeśli zadania cron wymagają uprzywilejowanego dostępu.

To, czy odpowiedź Stefana najlepiej pasuje, naprawdę zależy od tego, ile kłopotów chcesz skonfigurować i czy chcesz, aby komunikaty o błędach trafiały do ​​głównego konta e-mail, czy do osób, które normalnie monitorują codzienną wydajność.

Powodzenia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.