volcom
(usa Debian)
Enviado em 18/08/2009 - 10:03h
Olá Pessoal,
Não sei se o SED pode me ajudar nessa tarefa, mas vamos lá:
Resumindo, estou criando um script para consultar minha fila de mensagens no Postfix e se algum endereço de e-mail aparecer mais de X vezes nessa consulta é enviado um e-mail para o admin do sistema informando a data, quantidade de mensagens e o endereço de e-mail para verificarmos se é algum ataque de SPAM, etc.
Consegui chegar até a parte onde filtro os endereços e as quantidades, mas não sei como posso verificar a condição "maior que X", vamos aos comandos que usei:
mailq | grep ! | awk '{print $7}' | sort | uniq -c
Assim tenho uma listagem ordenada alfabeticamente no seguinte formato:
1 email@dominio.com
1 email2@dominio2.com
10 email3@dominio3.com
...
E por aí vai, sendo que a quantidade de linhas pode variar.
Preciso testar linha por linha e quando for maior que 5 (não necessariamente esse valor) enviar a informação (quantidade de mensagens e endereço de e-mail) para o e-mail de administrador.
Imagino que seja algo com IF, mas não sei como manipular as informações em variáveis para fazer o teste.
Tentei com o awk, mas ele joga TODOS os valores da primeira coluna na variável de uma só vez:
TESTE=`cat /tmp/teste.txt | awk '{print $1}'
echo $TESTE
1 7 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 4 1 1 1 4 1 1 1 1 1 2 1 1 1 1 3 1 2 1 9 4 4 1 1 1 1 1 1 1 1 1 55 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 8 1 2 426 1 1 1 1 2 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 2 1 1 43 2 1 2 1 1 1 1 1 2 1 1 3 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 12 1 2 2 1 1 1 4 1 1 1 1 1 2 1 1 1
Não sei se estou complicando as coisas (por falta de conhecimento) ou falta de lógica...
Espero que possam clarear minhas idéias, pois qualquer ajuda será muito bem vinda!
Obrigado!