Reconexão automática para internet ADSL
Publicado por Iran Macedo (última atualização em 01/09/2010)
[ Hits: 8.142 ]
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
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS
Comparar recursivamente duas pastas
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?
Warcraft II Remastered no Linux? (6)
O programa assinador digital (5)









