Reconexão automática para internet ADSL
Publicado por Iran Macedo (última atualização em 01/09/2010)
[ Hits: 8.029 ]
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
Script para encontrar arquivos .wam, .mpeg
Gera estatísticas de consumo de memória e cpu.
Backup de vários servidores, diferenciado a rotina pela aplicação
Rotina para backup diário, semanal e mensal (exemplo para Firebird)
Claro 3g Sony Ericsson md300 script conexao - Revisado
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
O que você está ouvindo agora? [2] (175)
Copiar Layout do Teclado para aplicar em outra Distribuição (10)
Autenticação necessária. um aplicativo quer acesso ao chaveiro (2)