web-dev-qa-db-ja.com

/etc/cron.daily/foo:rootではなく特定のユーザーにメールを送信しますか?

CentOS 5.5を実行しています。

/etc/cron.daily/にいくつかのcronjobsが保存されています。これらのcronジョブの一部のメールは特定のメールアドレスに送信し、/ etc/cron.daily /の残りのメールはデフォルトのメールアドレス(root @ localhost)に送信する必要があります。

/etc/cron.daily/のCronjobsは、/ etc/crontabファイルから実行されます。/etc/crontabは「MAILTO」フィールドを指定します。 /etc/cron.daily/foo cronjobにMAILTOを設定して、これを上書きできますか?

これを処理する最良の方法は何ですか?

13

設定[email protected] in /etc/cron.daily/foo 動作しません。スクリプトの出力は[email protected]には送信されません。

http://www.unixgeeks.org/security/newbie/unix/cron-1.html のページにも、簡単な解決策が示されています。

ファイル /etc/cron.daily/fooには以下が含まれています。

#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" [email protected]

これにより、スクリプトの完全なパスに等しい件名が付いたメールが「[email protected]」に送信されます(例:/etc/cron.daily/foo)。

Unixgeeks.orgはこれについて次のように述べています。

cronからの出力

前に言ったように、cronからの出力はプロセスの所有者またはMAILTO変数で指定された人にメールで送信されますが、それを望まない場合はどうしますか?出力を他の人にメールしたい場合は、出力をコマンドmailにパイプするだけです。例えば.

cmd | mail -s "メールの件名"ユーザー

Stdoutではなくcronjobからのエラーのみを受け取りたい場合があるので、このトリックを使用します。構文は一見間違っているように見えるかもしれませんが、動作するので安心してください。次のcronjobは、STDOUTを/ dev/nullに送信し、パイプライン経由でSTDERRを処理します。

doit 2>&1 >/dev/null | mailx -s "$0" [email protected]

同じことですが、syslogに送信します。

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

Cronjob stderr to file and email へのServerFaultに関する私の回答も参照してください

13

このマシンでSA=アクセス権があると想定すると、新しいユーザーアカウントを作成し、このアカウントにタスクを追加するcronタスクを実行できます。このユーザーのメールは、次の場所にある.forwardファイルを使用して転送できます。このアカウントのホームフォルダー。cronタスクで特権アクセスが必要な場合は、このユーザーの権限を設定する必要がある場合があります。

これまたはStefanの回答が最も適しているかどうかは、設定​​の手間と、エラーメッセージをルートの電子メールに送信するか、通常は毎日の出力を監視する人に送信するかによって異なります。

幸運を

0
Michael Shaw