Solução para provedores - Receber aviso no celular quando ocorrer perda de pacote, hosts parados ou pacotes duplicados

Uma das grandes preocupações dos provedores é identificar o exato instante em que um servidor ou uma Access Point travou. Neste artigo vou disponibilizar o código fonte de um programa que envia mensagens para e-mail ou celular quando um host remoto parar de responder, quando estiver com perda de pacotes ou pacotes duplicados.

[ Hits: 48.417 ]

Por: Djair Dutra C. Jr. em 24/07/2006


Script que cadastra os hosts e os e-mails para receberem aviso



Copie o script abaixo para um arquivo texto e dê a ele o nome de "cadastro". Transforme este arquivo texto em executável usando o comando:

# chmod a+rwx cadastro

#!/bin/sh

principal(){

opt=$(dialog --backtitle "Verificador de Conexão - Versão 0.01" \
--stdout --title "Menu Principal" \
--menu "Escolha uma opção:" 0 0 0 \
1 'Cadastrar hosts' \
2 'Cadastrar e-mails para aviso' \
3 'Excluir host' \
4 'Excluir e-mail' \
5 'Lista detalhada de hosts')

if [ "$opt" == "" ]; then
exit
elif [ "$opt" == "1" ]; then
add_host
elif [ "$opt" == "2" ]; then
add_mail
elif [ "$opt" == "3" ]; then
del_host
elif [ "$opt" == "4" ]; then
del_mail
elif [ "$opt" == "5" ]; then
ver_hosts
fi

}

add_host(){

cad_nome=$(dialog --stdout --inputbox "Digite um nome para este host:" 0 0)
cad_nome=`echo "$cad_nome" | tr ' ' '_'`
cad_nome=`echo "$cad_nome" | tr 'a-z ' 'A-Z'`

if [ "$cad_nome" == "" ]; then
exit
fi

cad_host=$(dialog --stdout --inputbox "Digite o ip de destino:" 0 0)

if [ "$cad_host" == "" ]; then
exit
fi

cad_tam=$(dialog --stdout --title "TAMANHO DOS PACOTES" --inputbox "Informe o tamanho dos pacotes:
O padrão é 64" 0 0 64)

if [ "$cad_tam" == "" ]; then
exit
fi

cad_qtd=$(dialog --stdout --title "QUANTIDADE DE PACOTES" --inputbox "Informe a quantidade de pacotes para cada teste:" 0 0 30)

if [ "$cad_qtd" == "" ]; then
exit
fi

tx_min=$(dialog --stdout --inputbox "Informe a quantidade mínima permitida para perda de pacotes." 0 0 1)

if [ "$tx_min" == "" ]; then
exit
fi

tx_dup=$(dialog --stdout --inputbox "Informe a quantidade mínima permitida para pacotes duplicados:
OBS.: Geralmente em conexões wireless de longa distância é comum a presença de alguns pacotes duplicados." 0 0 0)

if [ "$tx_dup" == "" ]; then
exit
fi

echo "$cad_host,$cad_tam,$cad_qtd,$tx_min,$tx_dup,$cad_nome" >> hosts.conf
cad_host=""
cad_tam=""
cad_qtd=""
tx_min=""
tx_dup=""
dialog --stdout --msgbox "Host cadastrado com sucesso." 0 0
principal

}

add_mail(){

cad_mail=$(dialog --stdout --title "CADASTRAR E-MAIL" --inputbox "Informe o e-mail para enviar os avisos." 10 90)
if [ "$cad_mail" == "" ];then
principal
else
echo "$cad_mail" | tr 'A-Z' 'a-z' >> mail.conf
dialog --stdout --msgbox "E-mail cadastrado com sucesso." 0 0
principal
fi
}

del_host(){

for i in `cat hosts.conf | cut -d , -f 1,6 | sed "s, g"`;do
echo "$i" >> hosts.tmp
done

delete=$(dialog --stdout --menu "Escolha o host que deseja excluir." 0 0 0 `cat hosts.tmp`)
rm -rf hosts.tmp

if [ "$delete" == "" ]; then
principal
else
cat hosts.conf | grep -vw "$delete" > hosts.del
cat hosts.del > hosts.conf
rm -rf hosts.del
rm -rf hosts.tmp
principal
fi

}


del_mail(){

for i in `cat mail.conf`;do
echo "$i Excluir" >> mail.tmp
done

delete=$(dialog --stdout --menu "Escolha o e-mail que deseja excluir." 0 0 0 `cat mail.tmp`)
rm -rf mail.tmp

if [ "$delete" == "" ]; then
principal
else
cat mail.conf | grep -vwi "$delete" > mail.del
cat mail.del > mail.conf
rm -rf mail.del
rm -rf mail.tmp
principal
fi

}


ver_hosts(){

echo "Hosts cadastrados para verificação" > verip
echo "" >> verip

for i in `cat hosts.conf`; do

echo "Host............. `echo $i | cut -d , -f 6`" >> verip
echo "IP............... `echo $i | cut -d , -f 1`" >> verip
echo "Tamanho.......... `echo $i | cut -d , -f 2`" >> verip
echo "Quantidade....... `echo $i | cut -d , -f 3`" >> verip
echo "Perda permitida.. `echo $i | cut -d , -f 4`" >> verip
echo "Dupl. permitido.. `echo $i | cut -d , -f 5`" >> verip
echo "" >> verip

done
dialog --stdout --textbox verip 0 0

rm -rf verip
principal
}

principal
Página anterior     Próxima página

Páginas do artigo
   1. Entendendo como o programa funciona
   2. Script que cadastra os hosts e os e-mails para receberem aviso
   3. Script que verifica os hosts e envia os e-mails
   4. Criando o regra no crontab
   5. Inserindo os dados necessários para a verificação
   6. Sobre o programa
Outros artigos deste autor

Dando uma "enfeitada" no Ubuntu com o gDesklets

Tux, o cabo eleitoral

Personalizando o Ubuntu 9.04 com Screenlets

Software Livre - Muito mais que somente tecnologia

Falta de padronização no Linux

Leitura recomendada

Automatização de backup

KeepAlive para conexão discada (ou não)

gGedit como IDE para COBOL

Desinstalando todos os programas instalados a partir de uma data específica

Backup em HDs da rede

  
Comentários
[1] Comentário enviado por tomas em 25/07/2006 - 10:13h

Cara, muito bom esse script.
Continua evoluindo ele. Quem sabe ele não ganha força e tamanho e acaba virando um projeto maior, com página e tudo.
Ai mais pra frente ganha uma interface gráfica, que pode até ser via script mesmo, tipo zenith no gnome.
Parabéns.

[2] Comentário enviado por leolinux em 25/07/2006 - 10:49h

só um detalhe para celulares tim tbm tem o serviço de e-mail. fica assim dddseunumero@tim.com.br

[3] Comentário enviado por removido em 25/07/2006 - 13:09h

.

[4] Comentário enviado por internero em 25/07/2006 - 13:58h

No caso da tim o usuario tem que se cadastrar e pode, inclusive, escolher um nome de usuario diferente do numero do celular (ex: nome@tim.com.br).

unico senão é que esse serviço é pago... voce apenas recebe uma notificação, mas para ler a mensagem há tarifação.

[5] Comentário enviado por malacker em 25/07/2006 - 16:41h

Aê galera!

Depois que o artigo saiu, percebi que algumas linhas vieram quebradas. Eventuais problemas na execução do script, provavelmente serão por conta destas quebras. Quem desejar, posso enviar um e-mail com os arquivos originais.
Em relação ao envio das mensagens quem não tiver operadora ou celular com este recurso pode enviar uma mensagem para o hotmail, por exemplo. Você fica sabendo do recebimento do e-mail no exato momento, através do Messenger, ou aMSN (no Linux).

[6] Comentário enviado por Raid_Zer0 em 25/07/2006 - 19:33h

Pessoal, qualquer coisa que sirva de ajuda a todos os admins de plantão, que facilite nossas vidas, é muito bem-vindo! Só peno por um tutorial mais detalhado das duas ferramentas, de como elas funcionam, quais suas dependencias, etc!
Abraços!

[7] Comentário enviado por TheHawk em 26/07/2006 - 07:36h

Só está faltando no seu script fazer ele gerar uma pagina HTML, tipo o software monesa, para q se tenha um controle em uma pagina tambem, ai ficaria bem completo.

[8] Comentário enviado por Goofynho em 26/07/2006 - 11:03h

legal

[9] Comentário enviado por mgdias em 01/05/2007 - 21:07h

Fiz uma daptação do código e já monitoro a saida em uma pagina na intranet !!!

[10] Comentário enviado por jogador em 11/05/2007 - 12:58h

a vivo tbm tem o serviço

dddnumero@tormedoemail.com.br

amazoniacelular tbm

dddnumero@iamazoniacelular.com.br*

*so pra quem é assinante iamazonia.

abs

[11] Comentário enviado por meuamobiana@hotm em 20/11/2007 - 14:47h

b

[12] Comentário enviado por fhvieira em 25/06/2008 - 13:45h

[: 161: ==: unexpected operator

quando executo abre normal, na hora de cadastrar host da esse erro

[13] Comentário enviado por tecnet em 04/08/2009 - 22:03h

MQDIAS,
Poderia enviar pra gente esta adapcao, Obrigado.

vlw.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts