Pra quem não usa WhatsUp e Nagios mas tem um *inx.
Publicado por Henrique Aschenbrenner 10/03/2006
[ Hits: 7.280 ]
Homepage: NONE
Pessoal, primeiramente uma boa noite, este é o meu primeiro Script publicado na VOL e eu gostaria que me reportasem seus experimentos com o script que desenvolvi. Bom básicamente é um script que monitora hosts através de ping e envia e-mail para notificar o "host down", mas ele é um pouquinho inteligente. Ele é composto por 3 arquivos, o script própriamente dito, um arquivo onde irá conter os nomes dos hosts e IP`s e um arquivo temporário. Bom vamos lá ...
*****arquivo monitor******** #!/bin/ksh #Script de monitoracao dos servidores do datacenter #Criado por Henrique Aschenbrenner em 13/02/2003 #Versao 0.1.1.1.1.1.1.1.1.0 #________________________________________________ #Declaracao de variaveis #arqivos de log tela="/var/tmp/operador/henrique/logs/tela.log" infor="/var/tmp/operador/henrique/logs/infor.log" monit="/var/tmp/operador/henrique/logs/monit.log" monit1="/var/tmp/operador/henrique/logs/monit1.log" warning="/var/tmp/operador/henrique/logs/warning.log" #arquivos de informacao lista="/var/tmp/operador/henrique/progs/lista.inf" lista1="/var/tmp/operador/henrique/progs/lista1.inf" count=0 limit=1 hosts=79 a=2 message="" #_______________________________________________ #Criando arquivos cp /var/tmp/operador/henrique/progs/listaB.inf /var/tmp/operador/henrique/progs/lista.inf cp /var/tmp/operador/henrique/progs/listaB.inf /var/tmp/operador/henrique/progs/lista1.inf #_____________________________________________ #Laco de repeticao infinito while [ $count -le $limit ] do { a=2 clear echo >$tela echo >$monit1 echo >$monit echo >$lista1 #___________________________________________ #Enquanto a nao for host fassa while [ $a -le $hosts ] do for i in "`awk -F: 'BEGIN { b='$a' } { linha[NR]=$1} END { print linha[b] }' $lista`" do #__________________________________________ #variaveis de tempo time1=`date '+%H:%M'` time=`date '+%d/%m/%y'` #___________________________________________ #filtrando arquivo e criando variaveis t="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$1}END{print linha[b]}' $lista`" var="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$2}END{print linha[b]}' $lista`" u="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$3}END{print linha[b]}' $lista`" v="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$4}END{print linha[b]}' $lista`" p="`ping $var > /dev/null ; echo $?`" hora=`date +%H` min=`date +%M` if [ $p -eq $v ] then { if [ $p -eq 1 ] then { p=`expr $v + 1` echo "${t}:${var}:${u}:${p}">> $lista1 } else { echo "${t}:${var}:${u}:${p}">> $lista1 } fi } else { if [ $p -eq 0 ] then { echo "${t}:${var}:${u}:${p}">> $lista1 } else { if [ $p -eq 1 -a $v -eq 2 ] then { p=2 echo "${t}:${var}:${u}:${v}">> $lista1 } else { p=`expr $v + 1` echo "${t}:${var}:${u}:${p}">> $lista1 } fi } fi } fi message="${time} ${time1} | HOST: $i | STATUS: " #___________________________________________ #Testando as condicoes entre p e v e comparando com a log if [ $p -eq $v ] then { if [ $p -eq 0 ] then { message="${message} OK " } else { message="${message} Ainda fora do ar..." } fi } else { if [ $p -eq 0 ] then { if [ $v -eq 1 ] then { message="${message} OK " } else { message="${message} OK" echo $message >> $monit1 mailx -s "Server Up - $i" -r DATACENTER@elektro.com.br $u < $monit1 sleep 1 echo $message >> $infor echo > $monit1 } fi } else { if [ $p -eq 2 ] then { message="${message} Fora do ar..." echo $message >> $monit1 mailx -s "Server Down - $i" -r DATACENTER@elektro.com.br $u < $monit1 sleep 1 echo $message >> $infor echo > $monit1 } else { message="${message} Atencao, possivel desconecxao..." echo $message >> $warning # mailx -s "Server Warning - $i" -r DATACENTER@elektro.com.br $u < $monit1 sleep 1 echo $message >> $infor echo > $monit1 } fi } fi } fi echo $message done a=`expr $a + 1` done #______________________________________ #parada de 3 minutos sleep 180 #____________________________________________________ #Mesma coisa que a parte de cima clear a=2 echo >$tela echo >$monit1 echo >$monit echo >$lista while [ $a -le $hosts ] do for i in "`awk -F: 'BEGIN { b='$a' } { linha[NR]=$1} END { print linha[b] }' $lista1`" do time1=`date '+%H:%M'` time=`date '+%d/%m/%y'` t="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$1}END{print linha[b]}' $lista1`" var="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$2}END{print linha[b]}' $lista1`" u="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$3}END{print linha[b]}' $lista1`" v="`awk -F: 'BEGIN {b='$a'}{ linha[NR]=$4}END{print linha[b]}' $lista1`" p="`ping -c 2 $var > /dev/null ; echo $?`" hora=`date +%H` min=`date +%M` if [ $p -eq $v ] then { if [ $p -eq 1 ] then { p=`expr $v + 1` echo "${t}:${var}:${u}:${p}">> $lista } else { echo "${t}:${var}:${u}:${p}">> $lista } fi } else { if [ $p -eq 0 ] then { echo "${t}:${var}:${u}:${p}">> $lista } else { if [ $p -eq 1 -a $v -eq 2 ] then { p=2 echo "${t}:${var}:${u}:${v}">> $lista } else { p=`expr $v + 1` echo "${t}:${var}:${u}:${p}">> $lista } fi } fi } fi message="${time} ${time1} | HOST: $i | STATUS: " if [ $p -eq $v ] then { if [ $p -eq 0 ] then { message="${message} OK " } else { message="${message} Ainda fora do ar..." } fi } else { if [ $p -eq 0 ] then { if [ $v -eq 1 ] then { message="{message} OK " } else { message="${message} OK" echo $message >> $monit mailx -s "Server Up - $i" -r DATACENTER@elektro.com.br $u < $monit sleep 1 echo $message >> $infor echo > $monit } fi } else { if [ $p -eq 2 ] then { message="${message} Fora do ar..." echo $message >> $monit mailx -s "Server Down - $i" -r DATACENTER@elektro.com.br $u < $monit sleep 1 echo $message >> $infor echo > $monit } else { message="${message} Atencao, possivel desconecxao..." echo $message >> $warning # mailx -s "Server Warning - $i" -r DATACENTER@elektro.com.br $u < $monit sleep 1 echo $message >> $infor echo $message > $monit } fi } fi } fi echo $message done a=`expr $a + 1` done sleep 180 um } done *****arquivo listaB.inf************ nome_do_servidor:IP_do_servidor:e_mail_para_notificacao:0 ******************************** O Zero no final da linha mensurada acima é uma flag que corresponde : 0 host up 1 host não respondeu ao primeiro ping 2 host down
Java 7/8 - Instalação automatizada no Ubuntu
WallpaperID - papel de parede com IP e kernel do usuário
linkswitch (redundância de internet)
Verifica quais ports necessitam de atualização
Monitore vários servidores ao mesmo tempo com Apache + shellscript
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Pq me aparece isso quando fui atualizar o Ubuntu 24.10 no terminal? (3)
Pegar a ultima ocorrencia viva (2)
como coloco para instalar com esse erro. (13)
Alguém sabe de documentos de texto e /ou vídeo aulas de certificações ... (1)