Como faço para suprimir todas as notificações por email do cron para tarefas específicas?

0

Estou agendando o seguinte script de shell

#!/bin/bash
(echo open mailserver.nowhere.local 25; sleep 1; echo EHLO; echo quit)\
  | telnet | grep "?Invalid command"

    if [ $? -eq 1 ]; then
       if [ -r /tmp/sendmail_stopped ]; then
          rm /tmp/sendmail_stopped
          /etc/init.d/sendmail start
          mail -s "sendmail has started back up." [email protected] < /dev/null
       else
           echo "sendmail OK"
       fi
    else
        if [ ! -r /tmp/sendmail_stopped ]; then
            touch /tmp/sendmail_stopped
            /etc/init.d/sendmail stop
        else
            echo "sendmail still not OK"
        fi
    fi

como este

*/5 * * * * root /home/amr/bin/sendmail_alive.sh 2>&1 > /tmp/sendmail_alive.log

mas ainda recebemos e-mails do comando telnet .

Eu tentei várias maneiras de suprimir o recebimento do email que contém a saída do comando telnet , que é

Connection closed by foreign host.

Eu não consigo descobrir o que estou fazendo de errado. Qualquer sugestão seria apreciada.

    
por octopusgrabbus 17.12.2014 / 21:56

1 resposta

2

Erro comum, ordem errada de redirecionamento, tente isto:

 … sendmail_alive.sh >/tmp/sendmail_alive.log 2>&1

Funciona assim:

  1. stdout do descritor de arquivos para /tmp/sendmail_alive.log
  2. descritor de arquivo stderr para o valor de stdout ( /tmp/sendmail_alive.log )

Com o seu pedido, você primeiro aponta o stderr onde originalmente estava stdout e você obtém a mensagem stderr "Connection closed by foreign host." como resultado.

    
por 17.12.2014 / 22:54