Reconexão automática para internet ADSL
Publicado por Iran Macedo (última atualização em 01/09/2010)
[ Hits: 7.934 ]
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
Automatizando com Script-Expect
Cadastro SHELL SCRIPT/MySQL/PHP
Script simples para fazer backup em fita DAT
Script de monitoracao de servicos
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)