fbpx
Redes

Monitorar hosts por meio de ping

Depois de publicar aqui o meu script em bash para enviar comando ssh para mikrotik, compartilho com os leitores do blog outro script em bash que na verdade não sou seu verdadeiro autor, confesso. Porém já fica difícil dar os devidos créditos, pois já o uso há algum tempo e perdi as referências que usei para montá-lo, caso volte a encontrá-las atualizarei o post com as informações completas, peço desculpas desde já.

Este script parte do princípio do mesmo já citado anteriormente, temos uma lista de hosts em um arquivo separado de nome “hosts.txt” – mas nada impede de usarmos o mesmo arquivo criado anteriormente – lembrando que devemos inserir um ip por linha dentro deste arquivo.

Um requisito não obrigatório mas muito interessante é que tenhamos no micro/servidor onde executaremos este script um servidor Sendmail instalado e funcional, pois desta forma o script enviará um e-mail de alerta para o endereço cadastrado quando houverem falas de ping; caso não tenhamos um servidor de e-mail configurado nosso script apenas irá gerar os logs de registro.

Pois bem, com os ip’s dos hosts devidamente cadastrados em nosso arquivo, podemos fazer nosso script conforme abaixo; com estas configurações ele irá executar um teste de ping enviando 4 requisições para cada host, em caso de falha será gerado um log para podermos analisar e termos os registros para análise. Como dito anteriormente, se possuirmos um servidor de e-mail rodando em nossa máquina, também será enviado um e-mail de alerta a cada falha.


#!/bin/bash
############################################################################
# Monitoraramento de host baseado em resposta de ping
# pingHOST.sh - v.0.1 - 2011/03/01
#
# Autor: Alexsandro Felix
# Site: http://blog.ffelix.eti.br
# E-mail/MSN/GTalk: [email protected]
# Este script pode ser copiado e modificado livremente,
# desde que os devidos créditos sejam concedam ao autor os devidos créditos
# O script original pode ser encontrado em: http://blog.ffelix.eti.br/monitorar-hosts-por-meio-de-ping/
############################################################################
# Quantia de ping a serem enviados para cada host
COUNT=4
for hosts in $(cat hosts.txt); do
	# email report when
	SUBJECT="#Falha de ping"
	EMAILID="[email protected]"
	for myHost in $hosts do
		count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }'| awk '{ print $1 }')

		if [ $count -eq 0 ]; then
			echo "RB : $myHost apresenta-se offline em $(date)" | mail -s "$SUBJECT" $EMAILID
			echo "Rb: $myHost apresenta-se offline em $(date)" >> ping.log
		fi
	done
done

Com o script devidamente configurado, uma boa opção é deixá-lo programado em nosso crontab com intervalos regulares, de 1, 5 ou talvez 10 minutos (fica a seu critério) para termos nossa monitoria constante.

Este script fica como alternativa para diversos sites e serviços de uptime que vemos na Internet, muitos deles sendo até mesmo pagos, acreditem, alguns fazem simplesmente só isso.

Fica aqui registrada a dica de mais um bash script, por mais simples que seja, sempre serve ao menos para o nosso aprendizado. Se quiser sugerir algo, mandar um “Hello, world!” ou mesmo reclamar, me siga no Twitter.

Felix

Residindo atualmente na cidade de Cascavel, no oeste do Paraná. Já dei aulas de informática, trabalhei com Hardware, redes, fui analista de suporte, aprendi SEO e mídias sociais e também programação. Faço um pouco de tudo, mas não sou especialista em nada, por isso estou sempre estudando e tentando evoluir. Com isso vou compartilhando aqui um pouco do que vou aprendendo no dia a dia.

Verified by MonsterInsights