roda meu script em loop infinito [RESOLVIDO]

1. roda meu script em loop infinito [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 28/04/2016 - 21:06h

ola pessoa, ve se vcs pode me ajudar , aqui na empresa estamos desenvolvendo um simples hotspot para nosso clientes, onde quando o cliente acessar nosso wifi ele registra o ip dele dentro
do banco de dados mysql, rodo script importando o ip, depôs aplico uma regra iptables, coloquei essa rotina no cron, porem o cron o minimo que ele roda e um minuto , queria que foce menos, tipo 30 segundos , ja vi vários exemplos de loop, tipo esse abaixo

while
do
/etc/script./exemplo.sh
..
.sleep 30
done

pra execulta ./rotina.sh &

ele fica rodando , porem depos de 24 horas ele morre

alguém pode ajudar ?


  


2. Re: roda meu script em loop infinito [RESOLVIDO]

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 28/04/2016 - 22:50h

Você precisa que um script monitore novas conexões ao seu hotspot e insira o ip num banco de dados e o problema é manter esse script "no ar" o tempo todo? Se sim, precisaria explicar como essas "novas conexões" são capturadas, como por exemplo, se é o hostspot que colocar um arquivo de log e como ou algo do tipo; se é possível processar a informação após certo tempo ou tem que ser tempo real.







3. Re: roda meu script em loop infinito [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 29/04/2016 - 19:50h

ja tenho tudo proto, ja consigo fazer toda a rotina, quando um cliente se conectar na rede , ele e redirecionado para um pagina , essa pagina pega ip de acesso , aplica na base dados no msqly
dai entra o scripts, roda um comando do mysql fazendo a importação das colunas preenchida com acesso feito pelo cliente, ai aplico no iptables, meu complexo mais esta tudo ok ,
so preciso que esse script fique rodando o execultando o outro script com os comando do mysql , em 30 e 30 segundos , para ele ve quem logou e pega o ip aplicar suas devidas regras,



4. Re: roda meu script em loop infinito [RESOLVIDO]

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 29/04/2016 - 20:23h

Se for apenas para reiniciar a cada ~30 segundos, você pode usar o seu primeiro exemplo e não precisa usar o cron.


while true; do
/etc/script/exemplo.sh
sleep 30
done


Após o exemplo.sh terminar, o looping vai aguardar mais 30 segundos para executá-lo novamente.

Se precisar de algo mais exato, precisa armazenar o tempo de execução do script e subtrair de 30 para determinar quantos segundos faltam aguardar. Exemplo:


while true; do
t_ini=$(date +%s)
/etc/script/exemplo.sh
t_end=$(date +%s)
(( wait_time = 30 - ( t_end - t_ini ) ))
sleep $wait_time
done


Quanto ao problema do script encerrar após as 0 horas, não identifiquei nada errado que pudesse provocar isto, provavelmente foi algum outro processo que o encerrou.


5. Re: roda meu script em loop infinito [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 30/04/2016 - 15:37h

obrigado meu amigo deu certinho aqui, usei a segunda opção que vc mencionou .
muito obrigado mesmo






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts