Alguns provedores (principalmente os gratuitos) fazem um controle de conexões ativas, ou seja, aquele usuário que estiver sem atividade pode perder sua cota de banda ou simplesmente ser desconectado. Este script feito em bash se propõe a "enganar" o provedor, para que o mesmo pense que sua conexão está sempre ativa.
Estou escrevendo este meu primeiro artigo porque achei
interessante compartilhar uma solução que dei a um
problema que pode ser comum a muitos irmãos Linuxers.
Como a maioria dos brasileiros que utilizam a internet,
meu acesso a grande rede é via PPP discado (a situação
está difícil, não dá para disponibilizar de R$ 100,00
por mês tendo duas bocas para alimentar :P). O que
acontece é que alguns provedores (principalmente os
gratuitos, apesar da AOL já utilizar deste artifício
há algum tempo) monitoram o nível de atividade de seus
usuários para ver se suas conexões estão ativas ou não,
e, aquelas que não apresentarem um certo nível de
atividade são "graciosamente" terminadas ou tem sua banda
realocada para outros usuários com mais atividade.
Esse artifício não é de todo mal, pois como estes provedores
tem muitos acessos e a banda é cara, esta foi a maneira
encontrada por eles para "otimizar" os acessos para aqueles
que "precisam", tirando daqueles que estão "ociosos".
O que acontece é que o que mais gosto de fazer na internet
é ler textos, que por vez são longos (eu os salvo
posteriormente em disco, mas como a curiosidade é maior e
o texto já está na tela...) e quase sempre após ler um texto
eu tinha a ingrata surpresa de minha conexão ter sido
terminada :(.
Deixando o blá-blá-blá de lado, vamos ao que interessa!
Este script feito em bash scripting realiza um determinado
número de interações (determinado pela
variável TOT). Cada interação
realiza um determinado número de "pings" (ICMP echos) a um
servidor qualquer, dando um delay entre eles (para que o IDS
do servidor não pense que você está tentando
fazer um flood nele). O código é bem simples e
fácil de entender por quem manja um pouco de
programação e bash. Redirecionei todas as
mensagens (tanto as do STDOUT como do STDERR) para o device
"null", mas você pode redirecioná-las para arquivos de
log se desejar, elas tem que ser redirecionadas para poder
rodar o script em background.
Segue o código fonte, ele pode ser melhorado com certeza
e mais parametrizado, mas da maneira que está funciona muito bem.
#!/bin/sh
CONT=1
TOT=500
while [ $CONT -lt $TOT ]; do
ping -c 20 www.paginadoseuprovedor.com.br > /dev/null 2>&1
CONT=$((CONT+1))
sleep 40
done
[1] Comentário enviado por lordello em 29/06/2004 - 00:54h
Huumm... isso é interessante, mas não seria mais fácil usar o crontab?
Tipo assim:
# crontab -e
*/1 * * * * ping -c 20 www.paginadoseuprovedor.com.br > /dev/null 2>&1
Pronto, a cada minuto será executado o comando que você criou.
Para aumentar o intervalo é só mudar de */1 para */2 ou */3 etc...
Falow ae!!
[2] Comentário enviado por null_terminated em 29/06/2004 - 14:24h
Boa lordello,
Mais a minha intenção alem de tudo era mostrar uma brincadeirinha em bash para a galera, a tua solução só tem o empecilho de ter que tirar do crontab a linha toda vida q vc não estiver conectado, sou meio chato com performance, e não gosto de processos rodando sem necessidade, por mais insignificante que seja a degradação a performance global da maquina por conta de um simples "ping". Mais agradeço muito pela tua sugestão.
[4] Comentário enviado por enioha em 30/06/2004 - 14:57h
Tá de parabéns tambem concordo sobre processos desnecessários, já vi sistemas inteiros pararem por um processinho que a primeira vista não era nada. mas no caso havia gerado um loop no sistema.
[5] Comentário enviado por arturaugusto em 02/07/2004 - 00:47h
nao vejo isso como muito util,se os provedoress diminuem sua banda quando esta ocioso, intaum um ping continuo nao vai resolver grande coisa, pois vc nao esta realmente usando sua banda, se estiver vc tera a preferencia...
[6] Comentário enviado por PgDn em 02/07/2004 - 02:15h
pequeno trecho tirado do ppp-up.. para quem nao sabe o ppp-up é um arquivo q é executado toda vez que o pppd tem uma conexao com sucesso, ou seja, toda vez q vc se conecta na internet...
# If you want to ping the other end to keep the connection open.
# The output from ping will goto >/dev/null, you won't see it.
# Ping -i 60 = send ping every 60 seconds to remote = $5.
#(ping -i 60 $5 &) >/dev/null 2>&1
.... resumindo basta descomentar tal linha para que ele envie um ping a cada 60 segundo assim mantendo a conexao viva..e isso somente quando vc estiver conectado...
O arquivo ppp-up .. normalmente fica em /etc/ppp/ ele é util também se vc quiser colocar determinados serviços q se ativem na hora q vc conecta
[8] Comentário enviado por df.castro em 29/03/2005 - 17:47h
Olá amigos....
Estou fazendo, Ciência da Computação, e pesquisando sobre ping...encontrei este artigo, que tanto estou precisando para a resolução de um trabalho.
O trabalho basei-se no script acima...porém ainda nao programamos em script e sim e C. Portanto gostaria que me ajudasse na transformação do mesmo.
Ciente da ajuda, já segue os agradecimentos...
[10] Comentário enviado por bosetti em 25/07/2006 - 12:54h
Concordo, deixe um download rodando, pois se não estiver usando a internet, disconecte...
vai que vc deixou a internet ligada de madruga e acordou 10 horas da manhã... imaginas essas 4 horas a mais pesando no seu bolso =p