Teste de conexão no Velox

Publicado por Fausto Jacome 20/07/2009

[ Hits: 8.579 ]

Download Velox.sh




Tenho um servidor que fica ligado 24 horas na empresa que trabalho. Configurado com o no-ip, squid e tudo mais. Quando o velox cai, é aquele problemão. Aqui vai um script para ser colocado no cron para testar a conexão e manter a máquina conectada.


Com a conexão configurada com a ajuda do pppoeconf, coloque o script na pasta /usr/local/sbin/. Edite o crontab e coloque para rodar de minuto em minuto, conforme a linha a seguir:

* * * * * /usr/local/sbin/velox.sh > /dev/null 2>&1

  



Esconder código-fonte

#!/bin/sh

# ###############################################
# Script para autenticacao do Velox no linux
#
# +---------------------------------+ Sim +------+
# | Ja esta conectado ? +------>| Sai >
# +----------------+----------------+ +------+
# | Nao
# +<-------------------------+
# | |
# +----------------+----------------+ |
# | Tenta conexao + |
# | - poff ppp0 + |
# | - pon dsl-provider + |
# +----------------+----------------+ |
# | |
# +---------------------------------+ Nao |
# | Conseguiu conectar ? +---------+
# +----------------+----------------+
# | Tenta 3 vezes
# | Sim
# +---+---+
# | Sai |
# +-------+
#
# ###############################################

# ################################################################
# Definicoes dos comandos utilizados para conexao e autenticacao
# ################################################################

# Descomente para debug
# set -xv

# ################################################################
# Definicoes dos comandos utilizados para conexao e autenticacao
# ################################################################

# Caminho completo: poff e pon
# -----------------------------------------------------------
PPPOE_POFF=/usr/bin/poff
PPPOE_PON=/usr/bin/pon

# Caminho completo: sleep
# -----------------------------------------------------------
PAUSE_SLEEP=/bin/sleep

# Caminho completo: ping (necessario para testar a conexao apos autenticar)
# ------------------------------------------------------------------------------
PING=/bin/ping

# Hosts para teste de ICMP PING (um deles tem que responder ao menos)
# *******************************************************************
# Voce pode utilizar qualquer host ou use estes como padrao.
PHOST1='ns.dns.br'
PHOST2='ns1.dns.br'
PHOST3='a.root-servers.net'

# Parametros adicionais (nao altere a nao ser que voce saiba
# exatamente o que esta fazendo)
# ----------------------------------------------------------
PARAM_PING='-c 1'

# Quem sou eu ?..
MEUNOME="`basename $0`"

# Para testar se a interface pppoe ja esta ativa
# ----------------------------------------------
IFCONFIG="/sbin/ifconfig"
PPPOE_INTRF="ppp0"

PPPOE_POFF_PARAM="-a"
PPPOE_PON_PARAM="dsl-provider"

TEMPO_SLEEP="10s"

TENTATIVAS=3

AUXILIAR=$TENTATIVAS

###############################################################################
# FIM DA CONFIGURACAO
###############################################################################

# Funcoes do script
# -------------------------------------------------------------------------

verifica_programas ()
{
echo
echo "Verificando a existencia dos programas necessarios para o script ..."
echo

if [ -x $PING ]; then
echo "OK! \"Ping\" encontrado em $PING"
else
echo "$MEUNOME: ERRO! o ping NAO foi encontrando em $PING."
echo " Edite o script !!"
exit 2
fi

if [ -x $PPPOE_POFF ]; then
echo "OK! \"POFF\", encontrado em $PPPOE_POFF"
else
echo "$MEUNOME: ERRO! o curl NAO foi encontrado em $PPPOE_POFF."
echo "Edite o script !"
exit 2
fi

if [ -x $PPPOE_PON ]; then
echo "OK! \"PON\", encontrado em $PPPOE_PON"
else
echo "$MEUNOME: ERRO! o curl NAO foi encontrado em $PPPOE_PON."
echo "Edite o script !"
exit 2
fi
}


#-------------------------------------------------------------------------

testa_ppp0 ()
{
echo "Ligando a conexao PPPOE..."

# Testa se existe a interface ppp0
if ( ! ($IFCONFIG $PPPOE_INTRF > /dev/null 2>&1) ); then
# A interface nao existe, vamos tentar criar
if [ -x "$PPPOE_POFF" ]; then
$PPPOE_POFF $PPPOE_POFF_PARAM # Desliga a interface ppp0
else
if [ $? -ne 0 ]; then
echo "$MEUNOME: Erro na execucao do comando $PPPOE_POFF".
echo " Verifique a configuracao!"
exit 1
fi
fi
if [ -x "$PPPOE_PON" ]; then
$PPPOE_PON $PPPOE_PON_PARAM # Executa as configuracoes do pppoeconf
else
if [ $? -ne 0 ]; then
echo "$MEUNOME: Erro na execucao do comando $PPPOE_PON".
echo " Verifique a configuracao!"
exit 1
fi
fi
fi
}


#-------------------------------------------------------------------------

# Autenticacao do usuario no provedor
# ***********************************

echo "################################################################################"
echo " Script de autenticacao Velox "
echo "################################################################################"
echo
verifica_programas
echo

echo "Host Teste ICMP PING 1 = $PHOST1"
echo "Host Teste ICMP PING 2 = $PHOST2"
echo "Host Teste ICMP PING 3 = $PHOST3"
echo

# Verificando se ja esta autenticado...

echo "Verificando se ja esta autenticado... Por favor aguarde !!"

if ( ($PING $PARAM_PING $PHOST1 > /dev/null 2>&1) ||
($PING $PARAM_PING $PHOST2 > /dev/null 2>&1) ||
($PING $PARAM_PING $PHOST3 > /dev/null 2>&1) ); then
echo "$MEUNOME: Ja autenticado. Saindo..."
exit 0
fi

echo
echo "Nao esta autenticado! Realizando a autenticacao..."

echo "!!! **************** AGUARDE ***************** !!!"

# Comando para autenticacao. Tenta 3 vezes.

until [ $TENTATIVAS -lt 1 ]; do
echo " ====> Tentativa $TENTATIVAS/$AUXILIAR <===="
testa_ppp0
$PAUSE_SLEEP $TEMPO_SLEEP
if ( ($PING $PARAM_PING $PHOST1 > /dev/null 2>&1) ||
($PING $PARAM_PING $PHOST2 > /dev/null 2>&1) ||
($PING $PARAM_PING $PHOST3 > /dev/null 2>&1) ); then
echo "$MEUNOME: OK! Autenticado no Velox ..."
exit 0
else
echo "$MEUNOME: ERRO! Nao consegui conectar..."
let "TENTATIVAS = TENTATIVAS - 1"
fi
done

echo "$MEUNOME: Autenticacao falhou em $AUXILIAR tentativas no Velox ..."
echo " Verifique se a luz DSL esta acesa ou"
echo " as configuracoes do dsl-provider."

exit 0

#
# Mantenha descomentado mesmo com o debug comentado no inicio. Isto forca a
# finalizacao do debug.
set +xv

Scripts recomendados

Script simples para adicionar usuarios do djbdns

Atualizador de sistema multipla escolha

sincleg: sincronizador de legendas (srt)

ppmtolss16 converte imagens para o formato lss

Mudar tema Splashy


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts