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: 34.819 ]

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

Modem USB 3G largado na gaveta! Nãããõooo...

A internet é inocente

IPv6 - Esclarecendo dúvidas

N2N: Layer Two Peer-to-Peer VPN

Servidor Web com NetBSD (Apache + PHP + MySQL + *)

  
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