sendmail com cron job

2

Eu escrevi um script e tudo está funcionando tão bem de acordo com minhas necessidades:

a=$(df -h /mnt/smb | tail -n +3 | tr -s ' ' | tr '%' ' ' | cut -d ' ' -f 5)
echo $a

if [[ $a -ge 30 ]]; then
    cat /etc/diskspace/text.txt | sendmail test.gmail.com
fi

Eu quero rodar este script a cada minuto via Cron, veja meu crontab:

* * * * * /etc/diskspacae/vpndrive.sh

Como você pode ver, depois de executar este script se o espaço em disco for maior que 80%, eu quero usar o sendmail para receber uma notificação no meu e-mail.

Mas eu não entendi quando eu corri este script do Cron, e eu recebi esta mensagem de erro em /var/spool/mail/root .

ERROR Message: /etc/diskspace/vpndrive.sh line 34 : sendmail: command not found. 
    
por kunal 17.06.2014 / 10:36

2 respostas

9

Não se esqueça de que o script executado pelo Cron é executado em um ambiente com uma variável PATH limitada. Isto significa que no console quando você testa seu script, o console irá encontrar o sendmail sem problemas. Mas quando correu de Cron, o sendmail não foi encontrado.

A melhor prática ao escrever scripts para o Cron é colocar o caminho completo para acessar o comando que você deseja executar, apenas para ter certeza.

Normalmente, o binário sendmail é instalado em /usr/sbin , um caminho que não faz parte dos diretórios pesquisados pelo Cron por padrão. Então aconselho:

  1. Procure o local do binário sendmail ( locate sendmail ou find / -type f -name sendmail) se locate não estiver instalado)
  2. Anote o caminho completo para executar o sendmail no seu script
por Benoit 17.06.2014 / 11:28
1

Provavelmente sendmail não está instalado.

Para instalá-lo, digite sudo apt-get install sendmail no terminal.

Para configuração adicional, visite a pergunta semelhante: como configurar o sendmail no ubuntu?

    
por Roomy 17.06.2014 / 10:56