Iwatch e postfix

Boa tarde pessoal, blz?

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:

  1. 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 |.
  2. 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 '(').
1 curtida

Capezotte,

Você clareou d+ as coisas, mto grato pela ajuda.

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:

  1. 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.
  2. Eu esqueci mesmo de incluir as aspas aqui no post rsrs.

Muito obrigado pela ajuda :slight_smile:

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.