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

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

Layer7 e compilação do kernel mole-mole com Conectiva 10

Conhecimento x Soberba

Dando uma "enfeitada" no Ubuntu com o gDesklets

Personalizando o Ubuntu 9.04 com Screenlets

Controle de clientes e acessos no Squid

Leitura recomendada

Fazendo backup do seu MySQL com API do Dropbox

XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo

BigBashView, interface gráfica para o seu shell script

Linux com boot no Pendrive, com todas as facilidades: Smart-USB_Key-Mania, PLOP Boot Manager e outros métodos

Enviando mensagens para usuários 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 [email protected]

[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: [email protected]).

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

[email protected]

amazoniacelular tbm

[email protected]*

*so pra quem é assinante iamazonia.

abs

[11] Comentário enviado por [email protected] 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