Reconexão automática para internet ADSL
Publicado por Iran Macedo (última atualização em 01/09/2010)
[ Hits: 8.143 ]
Quedas constantes em conexões ADSL em modems ainda como Bridges podem deixar você e seus servidores um pouco mais distantes. Não se sabe como, nem quando, mas é certo que uma hora sua internet cairá.
Este script garante que sua internet ficará fora do ar o mínimo de tempo o possível. Basta dar permissão de execução e agendar tarefa no cron.
Na configuração atual, o script rodará por até 1 minuto (ciclo) fazendo com que seja possível agendá-lo de minuto a minuto no Cron, sem que hajam vários processos iguais ao mesmo tempo.
Para rodar este script, seu servidor precisa ter:
1 - Cron
2 - pppoeconf (e demais ferramentas, tais como "pon" e "poff").
Para agendamento no cron, acesse a pasta onde está o script e copie-o no /etc/init.d:
# cp ichecker.sh /etc/init.d/
Dê permissão de execução para o script:
# chmod +x /etc/init.d/ichecker.sh
Dê o comando no terminal como root:
# crontab -e <-- (Debian-like) ou
# vi /etc/crontab <-- (Red Hat-like).
Escreva isto na penúltima linha (a última linha deve ficar em branco):
*/1 * * * * root /etc/init.d/ichecker.sh
Salve e saia da edição do Cron. Para acelerar um pouco mais o processo, releia o arquivo do cron:
# /etc/init.d/cron reload (Debian-like) ou
# service crond reload (Red Hat-like).
Para verificar se o agendamento está funcionando e que o script está fazendo o seu trabalho:
1 - desative sua conexão de internet.
2 - tail -f /var/log/ichecker.sh
Verifique se dentro de um minuto você receberá a mensagem de conexão restabelecida.
O último bloco do script é para receber mensagens no arquivo de Log, facilitando a verificação e leitura de funcionamento do serviço. Descomente as linhas para receber estas informações.
Script testado e aprovado nas distros Debian, Ubuntu Server e Fedora 13.
Abs.
#!/bin/bash
###############################################################
#
# Internet Checker - verifica e conecta seu link ADSL de internet, caso este esteja offline.
#
# Utiliza o comando [ ifconfig ] para encontrar a saída "ppp". Caso não receba esta saída
# o script aciona os comandos para forçar desconexão (link travado) e para nova conexão.
#
# Tem tempo definido de vida de aproximadamente 1 minuto. Isso evita que vários processos
# deste script sejam ativados ao mesmo tempo, gerando alta carga no sistema.
#
# O serviço pode ser rodado manual ou agendado através do Cron para que seja automático.
# Ele não gera interatividade com o usuário, nem joga saída de comandos na tela. Caso deseje
# fazer algo interativo, o agendamento com o Cron poderá não funcionar corretamente!
#
# Pode ser utilizado para verificar e levantar conexões de VPN (tun0, tun1, etc), se modificado
# corretamente. O arquivo está comentado. Faça mudanças com cuidado e atenção! Siga as pistas!
#
###############################################################
#
# Programa: ichecker.sh
# Versão 1.0
# Licença de uso: BSD
# Use, compartilhe, mantenha os créditos de quem criou e/ou ajudar a desenvolver.
#
###############################################################
#
# Versão 1.0:
# Verifica por saídas "ppp", por exemplo (ppp0, ppp1, pppn). Dá comando de nova conexão, caso
# saída não seja encontrada. # Tem ciclo de 1 minuto, aprox. Gera Log em /var/log/ichecker.log.
#
###############################################################
#
# Por Iran Macedo.
# E-mail: macedo dot if at gmail dot com
# última modificação: 29/08/2010.
#
###############################################################
contador=0
reconectado=0
# FUNÇÃO PRINCIPAL
Main() {
while [ "$contador" -lt "7" ];do
 unset status
 status=$(/sbin/ifconfig |grep -so ppp) # Verifica se existe conexão.
 if [ -z "$status" ];then #> /dev/null 2&1 # Se não tiver conexão...
 
    echo " " >> /var/log/icheck.log
 
    data=$(/bin/date +%Y-%m-%d-%H:%M:%S) # TimeStamp...
    echo "* Sem Conexão -> "$data"" >> /var/log/icheck.log # Informação pra Log...
 
###XXX - Cada ciclo terá 1 minuto, aproximadamente. Isso é gerado por
###XXX - 9 segundos (sleeps) vezes 6 loopings. Caso queira aumentar o ciclo,
###XXX - aumente a quantidade de loopings e não os segundos.
    /usr/bin/poff -a;poff -a # Utilizado por Debian-likes.
#   adsl-stop;adsl-stop # Utilizado por Red Hat-likes.
    sleep 5
    /usr/bin/pon dsl-provider # Utilizado por Debian-likes.
#   adsl-start # Utilizado por Red Hat-likes.
    sleep 4
    reconectado=1
    contador=$(($contador+1)) # Incrementa o valor do looping.
    
    Main # Chama Função Principal novamente para nova verificação (loop).
 else # Caso tenha conexão...
    if [ "$reconectado" -eq "1" -a -n "$status" ];then # Se a internet foi reconectada...
   echo " " >> /var/log/icheck.log
   data=$(/bin/date +%Y-%m-%d-%H:%M:%S) # TimeStamp...
        echo "* Conectado em: "$data"" >> /var/log/icheck.log # Marca a hora da reconexão.
   exit 0 # Força saída do programa, independente do looping.
    fi
 fi
##XXX - Descomente estas linhas abaixo para verificar se o
##XXX   agendamento no Cron está funcionando perfeitamente.
##XXX - Comando [ tail-f /var/log/icheck.log ]
# if [ "$reconectado" -eq "0" -a -n "$status" ];then
#
#   echo " " >> /var/log/icheck.log
#   data=$(/bin/date +%Y-%m-%d-%H:%M:%S) # TimeStamp...
#   echo "* Verificado em: "$data"" >> /var/log/icheck.log
#   exit 0 # Força saída do programa, independente do looping.
#
# fi
done
}
Main
Raiz Quadrada (Square Root) para Bash
Limpa comentários e linhas em branco nos arquivos de configuração (.conf)
Auto-installer ISP Config 3 - FC 11
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









