/etc/cron.daily/foo: 루트 대신 특정 사용자에게 이메일을 보내시겠습니까?

/etc/cron.daily/foo: 루트 대신 특정 사용자에게 이메일을 보내시겠습니까?

저는 CentOS 5.5를 사용하고 있습니다.

/etc/cron.daily/에 여러 개의 cronjob이 저장되어 있습니다. 우리는 이러한 cronjob의 이메일 중 일부를 특정 이메일 주소로 전송하고, /etc/cron.daily/에 있는 나머지 이메일은 기본 이메일 주소(root@localhost)로 전송하기를 원합니다.

/etc/cron.daily/의 Cronjob은 /etc/crontab 파일에서 실행됩니다. /etc/crontab은 "MAILTO" 필드를 지정합니다. /etc/cron.daily/foo cronjob에서 MAILTO를 설정하여 이를 무시할 수 있습니까?

이 문제를 처리하는 가장 좋은 방법은 무엇입니까?

답변1

설정이 [email protected]작동하지 않습니다 /etc/cron.daily/foo. 스크립트 출력은 다음으로 전송되지 않습니다.[이메일 보호됨].

페이지 위치는 다음과 같습니다.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]

'에게 이메일이 전송됩니다.[이메일 보호됨]' 테마는 스크립트의 전체 경로와 동일합니다(예 /etc/cron.daily/foo: ).

Unixgeeks.org에는 다음과 같은 내용이 있습니다.

크론 출력

앞서 말했듯이 cron의 출력은 프로세스 소유자나 MAILTO 변수에 지정된 사람에게 메일로 전송되는데, 이를 원하지 않는 경우 어떻게 해야 할까요? 출력을 다른 사람에게 메일로 보내려면 출력을 명령 메일로 파이프하면 됩니다. 예를 들어

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

ServerFault에 대한 내 답변도 참조하십시오.파일 및 이메일에 대한 Cronjob stderr

답변2

보다 우아한 해결책은 /etc/cron.d직접 사용하는 것입니다. 스크립트를 에 넣는 대신 /etc/cron.daily다음과 같은 곳에 놓고 다음과 같이 /usr/local/sbin/myscript.sh파일을 만듭니다 ./etc/cron.d/myscript

MAILTO=root,[email protected]
# run myscript.sh at 4:11 every day
11 4 * * * root /usr/local/sbin/myscript.sh

또한 특정 근무일에만 작업이 수행되는 경우를 더욱 효과적으로 제어할 수 있습니다. crontab(5)자세한 내용은 해당 사람을 참조하세요 .

답변3

이 컴퓨터에 SA 액세스 권한이 있다고 가정하면 새 사용자 계정을 만들고 해당 계정의 cron 작업에 작업을 추가할 수 있습니다. 그런 다음 계정의 홈 폴더에 있는 .forward 파일을 사용하여 사용자의 메일을 전달할 수 있습니다. cron 작업에 권한 있는 액세스가 필요한 경우 이 사용자에 대한 권한을 설정해야 할 수도 있습니다.

이 답변이 가장 좋은지 Stefan의 답변이 가장 좋은지는 실제로 설정하는 데 얼마나 번거로움을 원하는지, 오류 메시지를 루트 이메일로 보낼지 또는 일반적으로 일일 출력을 모니터링하는 사람에게 보낼지 여부에 따라 다릅니다.

행운을 빌어요

관련 정보