Reconexão automática para internet ADSL
Publicado por Iran Macedo (última atualização em 01/09/2010)
[ Hits: 7.922 ]
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
Dell 1390 WLAN (Broadcom 4311)
Distribuindo arquivos para máquinas em rede
Debian - inicializando VMs (VirtualBox) no boot
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta