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.
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
[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.
[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.