Como enviar a saída do script de shell como uma tarefa cron

2

Eu criei uma tarefa cron que executa um script de shell. Eu gostaria que o script de shell executasse e capturasse sua saída e o enviasse por e-mail após a conclusão. Aqui está o que eu tenho até agora, mas o corpo da mensagem de e-mail está vazio.

Eu tentei todos os itens a seguir:

/root/myscript.sh | tee output.txt | mail -s "Email subject" [email protected]

/root/myscript.sh | tee output.txt | mail -s "Email subject" [email protected] &> /dev/null

/root/myscript.sh | tee output.txt && mail -s "Email subject" [email protected] < output.txt &> /dev/null

/root/myscript.sh > tee output.txt && mail -s "Email subject" [email protected] < output.txt &> /dev/null

Todos são executados corretamente, mas produzem um email com um corpo vazio. A execução do script produz saída no stdout.

    
por Nilpo 02.01.2016 / 02:09

1 resposta

4

O motivo mais provável para a perda de texto de tela no redirecionamento é que a saída estava sendo enviada para o dispositivo de erro padrão. Isso será confirmado se output.txt estiver vazio depois de executar o comando.

Para redirecionar o erro padrão, assim como a saída padrão, você precisa adicionar 2>&1 aos seus comandos, como em:

/root/myscript.sh 2>&1 | tee output.txt | mail -s "Email subject" [email protected]

Você deverá ver a saída de todo o seu script em output.txt .

    
por 02.01.2016 / 11:20