Eu crio cron-jobs no Ubuntu colocando o executável em um dos /etc/cron.{daily,hourly,monthly,weekly}
. Existem muitos diretórios começando com cron:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Gostaria de receber emails dos meus scripts quando:
- Um script falha e fornece um código de saída diferente de zero.
- O script tem algo a me dizer
Tenho o SSMTP instalado e funcionando, envio meus e-mails da minha conta do Google. O fato de o SSMTP poder enviar apenas emails usando uma conta não é um problema para mim. É apenas um servidor doméstico e os usuários que eu tenho não têm a capacidade de adicionar cron-jobs.
Gostaria de saber como a correspondência de scripts geralmente funciona no Linux / Unix em geral e no Ubuntu especificamente. Eu também gostaria de saber uma boa maneira de receber e-mails nas duas situações acima.
/etc/aliases
entradas não devem seguir o formatoname: value1, value2, ...
? Não sei, talvez o formato tenha sido alterado em algum momento nos últimos 8 anos.Para receber o email do vixie cron, você precisará de algo que replique o comando sendmail. Portanto, a instalação do postfix ou SSMTP classificará essa parte. Se você estiver usando o postfix, o arquivo de aliases poderá ser usado para mapear os usuários do sistema para endereços de email reais.
Adicionar MAILTO = "[email protected]" na parte superior de um crontab fará com que qualquer saída do trabalho cron seja enviada por email. Isso é independente do código de erro.
Para scripts que geram erros corretamente no STDERR, é fácil receber emails apenas quando eles dão errado, faça o seguinte:
Isso redirecionará apenas o STDOUT para nulo. Se alguma mensagem STDERR estiver presente, eles receberão um email para você.
No entanto, descobri que alguns scripts geram erros incorretamente como STDOUT e definem o código de saída como 1. Não descobri uma maneira de obter a saída deles, mas ignore a saída se o código de saída for 0. O único método Eu posso pensar em é redirecionar a saída para um arquivo, então se o código de saída não for 0, envie esse arquivo para o cron pegar. Parece bastante horrível embora.
fonte
Se você quiser enviar toda a saída (stdout e stderr) para um endereço específico, poderá usar a
MAILTO
variável Por exemplo, coloque o seguinte na parte superior do script.fonte
tente adicionar "root: [email protected]" em / etc / aliases
que enviará todas as mensagens desse usuário para o seu email. se você não quiser todas as mensagens, poderá criar um usuário especificamente para isso.
Contanto que o script produza algo, você receberá um email.
fonte
Em todos os meus servidores de produção, que normalmente executam cerca de 20 cronjobs por dia, juro pelo pacote python-cronwrap. Confira aqui: http://pypi.python.org/pypi/cronwrap . É realmente fácil de configurar e, acima de tudo, confiável.
fonte
Eu não acho que o SSMTP depende do que você precisa fazer. Você precisa de algo que possa "receber" emails dos processos cron e enviá-los para sua caixa de correio real.
Eu uso o Sendmail, mas isso é porque eu sou um veterano da Sun; Eu sei que é ridicularizado por todas as crianças legais hoje em dia que usam o Postfix. Sua comunidade ubuntu pode guiá-lo na configuração do seu sistema de correio.
fonte
Uma alternativa - arquivo todos os emails raiz em alguns arquivos e excluo o email original.
Eu crono um script (aqui está a parte principal) -
Isso mantém as coisas arrumadas e eu posso ficar de olho nisso. Eu poderia enviar por e-mail um arquivo de mensagens diárias para um ID de e-mail externo, etc.
fonte