executar script com loop infinito [RESOLVIDO]

1. executar script com loop infinito [RESOLVIDO]

Alex A. Felicioni
alexfelicioni

(usa Debian)

Enviado em 03/02/2009 - 21:52h

Olá pessoal.
Baseado em pesquisas aqui no vol, desenvilvi um script simples para monitorar a internet de um cliente, pingando o site do uol 5 vezes a cada 30 segundos, e caso não responda, derruba a conexão DSL e conecta um link alternativo, a rádio.
O problema é que esse script usa um loop infinito e caso eu o coloque na inicialização normal, bloqueia os demais pois não há saída do script.
Como fazer para que o script seja executado em paralelo com os demais, e não em sequancia..
A minha idéia é fazer como uma thread, só que em shel script. tem como fazer isso?


  


2. MELHOR RESPOSTA

Denis Doria
thuck

(usa Debian)

Enviado em 03/02/2009 - 22:17h

Hum... pq desconectar e conectar em outra? Pq não usar as duas ao msm tempo com iproute?
De qualquer forma, pq vc não manda o sript p/ background? Ou usa o nohup?

3. Re: executar script com loop infinito [RESOLVIDO]

Alex A. Felicioni
alexfelicioni

(usa Debian)

Enviado em 03/02/2009 - 22:43h

Esse meu servidor esta rodando o squid, e até agora eu não descobri como utilizar as duas conexões ao mesmo tempo para essa finalidade. Sempre que a ppp0 (radio) conecta ela passa a ser a rota padão, fazendo comque a eth0 (dsl) deixe de ser funcional.
esse cliente precisa apenas de redundancia, e com essa solução simples que encontrei, já da conta do recado. voce deu uma boa ideia, executar em background.
O tenho um outro script qua chamará o testalink( nome que eu dei ao script de monitoramento) o primeiro script (chamador) vai ficar aguardando o segundo (chamado) terminar a execução?? se isso ocorre já não dá certo, pois o chamado fica em loop infinito.
O que voce acha??
como jogo ele para background??


4. Re: executar script com loop infinito [RESOLVIDO]

Denis Doria
thuck

(usa Debian)

Enviado em 03/02/2009 - 22:59h

Pq o segundo entraria em loop infinito?



5. cron

Jeffeson Luiz Oliveira de Campos
foguinho.peruca

(usa Ubuntu)

Enviado em 03/02/2009 - 23:08h

Olá!

Como paliativo, casdo o background não de mto resultado, coloque o script dentro do cron. Se o Seu cliente começa a usar o server apartir da 8 por exemplo, v c pode agendar pra 8:15. Não é a melhor forma, mas até vc aprender usar iptables pra usar os 2 links, é um paliativo... ^^


6. Re: executar script com loop infinito [RESOLVIDO]

Alex A. Felicioni
alexfelicioni

(usa Debian)

Enviado em 03/02/2009 - 23:17h

O loop infinito é porque o script fica o tempo todo em um while, pingando o site do uol.
eu não quero que esse script pare. ele deve ficar o tempo todo em execução.
para não sobrecarregar o server, eu coloquei alguns sleep, no qual ele só verifica a conexão a cada 30 segundos.
e no cado do cron até é uma saida, mas se eu prefiro colocar o script na inicialização.


7. Re: executar script com loop infinito [RESOLVIDO]

Denis Doria
thuck

(usa Debian)

Enviado em 03/02/2009 - 23:26h

Assim não entre em loop infinito....

while :;
do

PINGS=$(ping -c 10 www.uol.com.br|grep 'icmp'|wc -l);
[ ${PINGS} -lt 4 ] && echo "faz alguma coisa" && break;
sleep 30
done


8. Re: executar script com loop infinito [RESOLVIDO]

Alex A. Felicioni
alexfelicioni

(usa Debian)

Enviado em 04/02/2009 - 20:27h

Pessoal, eu quero que o script fique rodando o tempo todo, respondo o ping ou não.
há uma sequencia de ifs que controla o que fazer em cada situação.

O script já está ok, faz o que eu quero com perfeição, mas o problema é que se eu coloco ele na inicialização, enquanto não tiver saída no script, o boot fica parado, aquardando o retorno do script, o que eu quero, é que o boot coloque o script para rodar e continue o boot normalmente, enquanto o script continua em execução eternamente.


9. Re: executar script com loop infinito [RESOLVIDO]

rodrigo martins
rodrigomb

(usa CentOS)

Enviado em 06/02/2009 - 12:39h

não seria melhor vc agendar na cron pra tipo de 5 em 5 minutos ele efetuar o ping, ai se ele nao responder executar o seu outro script q faz a conexao a radio e ja parar de executar o script.

ai a cada 5min ele ficar fazendo essa verificacao padrao sempre.

se cair o adsl entra o chamado do script q faz a radio e muda as rotas.

agora se vc quiser voltar ai teria q elaborar outra coisa, tipo outro script agendado pra verificar o link adsl , se caso ele voltar alterar a conexao e rotas pra ele novamente.

bom sei lá eu prefiro agendar na cron que algo rodando pra sempre. a menos que seja uma coisa muito critica que vc nao possa perder a conexao nem 1min....

ai se for esse seu caso recomendo já comprar um hardware , tem ums routers dual wan da linksys q tem load balance (junta conexoes) e redundancia q faz isso que seu script faz... so q no hardware isso é automatico e na hora , o usuario nem percebe!




10. Re: executar script com loop infinito [RESOLVIDO]

Alex A. Felicioni
alexfelicioni

(usa Debian)

Enviado em 07/02/2009 - 23:48h

Pessoal, analizei as propostas e a que deu crto para o que eu precisava foi colocar em background mesmo.
eu tenho um outro script que está na inicialização, coloque uma chamada para o script com loop infinito dessa maneira:

testalink.sh&

reiniciei o micro e tudo funcionou como esperado.

agradeço a ajuda de todos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts