Monitoramento de portas com netcat

Bom, venho neste artigo compartilhar um pouco meu conhecimento em administração de servidores com Linux. O artigo consiste no uso do netcat (nc) para monitoramento de portas ativas. Criaremos um script para monitoramento de portas e outro para alerta ao administrador via e-mail.

[ Hits: 35.405 ]

Por: Eduardo Ramos em 28/04/2005


Notificando o administrador em caso de falha



A segunda etapa consiste em enviar e-mails para o administrador do sistema no caso de alguma falha. Num primeiro momento pensei no SMS também, andei lendo o artigo do cabelo, mas o shell dele infelizmente não funciona mais.

Então resolvi reportar as falhas somente por e-mail, vamos lá!

Criaremos um shell que vai se chamar fail.sh

#!/bin/sh

check="check1.sh"
dir="/scripts/check"
rm -f /scripts/check/.mail.fail > /dev/null 2>&1

/scripts/check/check.sh | grep FALHOU > /scripts/check/.mail.fail

grep FALHOU /scripts/check/.mail.fail > /dev/null 2>&1

if [ $? != 1 ] ;
then
mail -s "Sistema de monitoramento registrou a seguinte ocorrência: " helpdesk@dominio.com.br $dir/.mail.fail
fi

rm -f /scripts/check/.mail.fail > /dev/null 2>&1

Neste cara aí em cima, quem usa celular que permite o recebimento de e-mails é a maior mão na roda! Bom, criamos os arquivos check.sh e fail.sh, como nossa intenção é monitorar somente as falhas, podemos até criar um para verificação positiva, em vez do servidor mandar uma falha ele manda um OK.

Vamos lá, criaremos o arquivo ok.sh que terá o mesmo conteúdo acima, porém ao invés de procurar pela string "FALHOU", ele vai procurar por "OK".

#!/bin/sh

check="check.sh"
dir="/scripts/check"
rm -f /scripts/check/.mail.ok > /dev/null 2>&1

/scripts/check/check.sh | grep OK > /scripts/check/.mail.ok

grep OK /scripts/check/.mail.OK > /dev/null 2>&1

if [ $? != 1 ] ;
then
mail -s "Sistema de monitoramento registrou a seguinte ocorrência "
helpdesk@dominio.com.br < $dir/.mail.ok
fi

rm -f /scripts/check/.mail.ok > /dev/null 2>&1

Bom, chegamos ao final deste artigo, gostaria de lembrar também que o script check.sh poderá ser colocado na tabela do crontab. Exemplo:

# crontab -e

*/10 * * * * /scripts/check/fail.sh

No caso, o agendamos para monitorar de 10 em 10 minutos.

Um abraço à todos e até a próxima!

Eduardo Ramos
eduardo@e-ramos.com.br
msn: eduardodasilvaramos@hotmail.com

Página anterior    

Páginas do artigo
   1. Iniciando
   2. Notificando o administrador em caso de falha
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Como verificar conexões abertas no Linux

Por que eu pago por 10 megas, mas só faço download a 1 mega?

Instalação do Apache, MySQL e PHP

Load Balancer com Failover, Perlbal e Heartbeat para servidores web

Instalando o Asterisk no CentOS 5.3

  
Comentários
[1] Comentário enviado por Ragen em 28/04/2005 - 08:25h

Olá Eduardo,

Só queria fazer um breve comentário... Desde que se tenha criatividade, pode-se fazer muita coisa com netcat, desde a sistema de transferencias de arquivos de um ponto a outro até um man-in-the-middle.

No entanto, em se falando de "varredura" por servicos, o nmap da um show a parte. Ou seja, pelo que eu entendi, o script que você colocou no seu artigo tenta fazer uma conexão na porta do serviço (certo? me corrija se eu tiver errado)... Se ele não estabelecer a conexão, entende-se que o sistema está com problemas. Porém pode acontecer de um servico ter problemas adversos E permitir uma nova conexão, por exemplo, ter um loop *infinito*/muito grande (problema relativamente comum em servidores MySQL 4) que inutiliza o serviço - Em algumas vezes o serviço se re-esbelece automaticamente, em outros casos não.

Nesse caso, além de testar uma conexão pra porta do servico, você precisa testá-lo (fazendo algum tipo de requisicao e analizar a resposta) para ter um pouco mais de segurança.

[]'s

Ragen

[2] Comentário enviado por shocker em 28/04/2005 - 09:56h

Eu prefiro utilizar o SNMP.
Além de ser padrão de mercado para monitoramento, ele é muito mais confiável e trata condições de erro, como as mencionadas pelo Ragen, no comentário acima.

Mais parabéns pelo artigo!

[]'s

Alan.

[3] Comentário enviado por eduardo.ramos em 28/04/2005 - 15:46h

Bom, críticas e sugestões são bem vindas, porém este foi uma solução simples que tinha pensado em resolver muito rápido um problema na minha rede. e é claro, que existem outras funçoes para o nc bem como a analise com outras ferramentas.
Eduardo Ramos

[4] Comentário enviado por patrickbrandao em 28/04/2005 - 20:31h

Grande garoto!

gostei do artigo, tive umas ideias muito boas...
continue assim, lembre-se: voce é brasileiro, e brasileiro...

Patrick Brandão

[5] Comentário enviado por eduardo.ramos em 29/04/2005 - 10:37h

Pow Patrick, valeu! vindo de vc só tenho a agradecer o incentivo...
Um forte abraço!

Eduardo Ramos

[6] Comentário enviado por agk em 29/04/2005 - 17:56h

Grande artigo, mostrando que com linux existem N soluções possíveis para um problema. Ehehe, com um pouco de criatividade e empenho se resolve qualquer parada.

[7] Comentário enviado por K1LL -9 em 13/11/2006 - 17:15h

Aê Eduardo ... boa boa ... eu curti.
Outro dos infinitos lados boms de nosso mundo Open-Source, vc larga um script com uma idéia bacana, além de quebrar seu próprio galho quebra de outros e ainda mais:
Disponibiliza base pra outras idéias.

Mas o script do graande Cabelo funciona (pelo menos com a claro) se vc alterar e usar por exemplo:

5191000000@clarotorpedo.com.br
ou melhor:
Cód-de-Área+Número-do-Cellular@clarotorpedo.com.br

Quando cai algo em algun cliente antes dele chiar o meu celular me avisa.

[]'s


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts