Estou tentando monitorar uma pasta c/ iwatch e ser notificado por e-mail. Porém não está sendo executado o envio e não sei onde pode ser o problema.
Fiz a instalação do postfix, configurei com o smtp do gmail. Quando executo um teste, é enviado e recebido o e-mail normal.
Usando o seguinte comando p/ testes.: sudo echo "Corpo do email" | mail -s "Titulo do email" destinatario@gmail.com
Mas quando tento fazer que o programa iwatch envie o e-mail ele não executa o envio.
To usando o seguinte como testes.: iwatch -r -c (w;ps aux) /etc | mail -s '%f foi alterado' destinatario@gmail.com
Não apresenta nem erro pra tentar fuçar.
Se alguém puder ajudar ou dar alguma dica eu agradeço desde já.
Grato.
Já chegou a usar o recurso embutido do programa para isso (a opção -m destinatario@gmail.com)?
Se eu estiver entendendo corretamente o manual (já que o iwatch não é empacotado para minha distribuição), ele vai rodar continuamente. Por isso, ele nunca se encerra e o mail nunca recebe um sinal de fim de entrada. Seria como você rodar yes 'Corpo de texto' | mail .... Não tem mensagem de erro pois o mail espera de boa-fé que um dia o programa que está atrás dele na pipeline encerre para que ele possa fechar a mensagem.
Em vez disso, o | mail tem que ser embutido dentro argumento -c (o comando que o iwatch roda a cada evento recebido):
iwatch -r -c '(w; ps aux) | mail -s %f" foi alterado" destinatario@gmail.com' /etc
Mais duas coisas:
Mesmo que o iwatch não rodasse continuamente, você iria receber um email com título %f foi alterado (literalmente), pois o iwatch não consegue ler ou alterar os comandos além do |.
Acho que você esqueceu de deixar o (w;ps aux) entre aspas ao copiar aqui, caso contrário receberia bash: erro de sintaxe próximo ao token inesperado '(').
Não tinha usado a opção -m embutida no programa, usei e deu super certo. Era o que eu estava querendo.
Fiz um teste mais simples, usando as opções -e com todos eventos, junto com -m do iwatch conforme vc citou. sudo iwatch -m destino@gmail.com -e all_events /tmp/teste
Desta forma deu certo, fez o envio … com o remetente configurado no postfix e para o destino que inseri no comando.
Vc tem razão nas duas observações:
Mesmo usando o exemplo do manual, incluindo o mail depois | ele não executa o envio. Eu não tinha entendido muito bem isso no manual. Mas entendi sua explicação.
Eu esqueci mesmo de incluir as aspas aqui no post rsrs.