Crontab altera MAILTO para apenas um trabalho específico no crontab do Root

5

Posso fazer o seguinte para alterar para onde o e-mail vai para um trabalho específico do crontab no crontab do root (não envie para o root do trabalho Do Something, apenas envie para o porklover):

# Make a hambone appear
* * * * * /scripts/hambone.pl

# Eat Ham
* * * * * /scripts/manga_ham.py

OLDMAILTO=$MAILTO

MAILTO=porklover.cramble.edu

#Do something
* * * * * /scripts/chown_abrahams_niece.sh

MAILTO=$OLDMAILTO
    
por Gregg Leventhal 07.01.2014 / 17:44

2 respostas

1

Embora a configuração de variáveis como essa em uma entrada do cron não seja possível, o que o crontab permitirá que você faça é substituir a variável MAILTO para uma única entrada e, em seguida, defini-la novamente para entradas subsequentes.

Exemplo:

# Eat Ham
* * * * * /scripts/manga_ham.py

MAILTO=porklover.cramble.edu

#Do something
* * * * * /scripts/chown_abrahams_niece.sh

MAILTO=root

Como desvantagem, se a configuração padrão MAILTO for alterada (em /etc/crontab , por exemplo), ela também precisará ser alterada nesta entrada cron.

    
por 22.04.2016 / 13:27
1

Nas implementações tradicionais do cron, você não pode fazer desta maneira. As definições de variáveis em um crontab são globais, e o cron usa o mesmo endereço de e-mail para todos os comandos.

Uma solução alternativa seria usar um endereço local e redirecionar com base na entrada.

Outro método para enviar a saída de um trabalho para um endereço diferente é fazer o envio manualmente. Veja pipe saída de um processo para outro, mas só executar se o primeiro tem saída? para vários métodos.

Algumas implementações modernas do cron, pelo menos a do systemd, analisam o crontab de forma diferente (obrigado geedoubleya , < href="https://unix.stackexchange.com/users/152830/jarauh"> jarauh : somente atribuições acima de uma linha de trabalho se aplicam a esse trabalho. Então, se você está em um sistema Linux moderno, há uma chance de fazer isso. Verifique a documentação no seu sistema ( man 5 crontab ).

Você ainda não pode fazer o que propôs na sua pergunta, porque o cron não expande o lado direito das atribuições de variáveis. MAILTO=$OLDMAILTO define MAILTO para um valor que começa com um cifrão. Você precisa repetir o endereço antigo.

# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl

[email protected]
#Do something. Email sent to [email protected]
* * * * * /scripts/chown_abrahams_niece.sh

MAILTO=
# Hunt rabbits. Doesn't send email.
* * * * * /scripts/hunt.pl --rabbits

MAILTO=bob
# Eat Ham. Email sent to bob on the local machine.
* * * * * /scripts/manga_ham.py

Observe também que MAILTO=porklover.cramble.edu enviaria mensagens para a conta porklover.cramble.edu na máquina local. Isso provavelmente não é o que você quer.

    
por 08.01.2014 / 02:37

Tags