[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dúvida em relação a um fluxo de script que exige retorno do 'whois'
From: |
Alexandre Mulatinho |
Subject: |
Re: Dúvida em relação a um fluxo de script que exige retorno do 'whois' |
Date: |
Wed, 12 Sep 2012 10:11:57 -0300 |
Bom dia,
Depois de quase uma hora arranjei uma 'solução alternativa':
*#!/bin/bash
TIMEOUT=10
while read ip;
do
whois $ip &
pid=$!
(sleep $TIMEOUT; kill $pid) &
wait $pid
done < /tmp/ip.txt*
Só que aí ele tentara dar kill mesmo nos processos que passaram com sucesso
e não demoraram/pararam.
Daí pensei em fazer uma gambiarra para resolver isso, só que aí ele iria
demora horas rodando, o que não me parece interessante justamente porque
estamos implementando um timeout para agilizar a execução do script, então
a 'gambi' ficou assim:
*
#!/bin/bash
TIMEOUT=10
while read ip;
do
whois $ip &
pid=$!
sleep 2
if [ -f /proc/${pid}/status ]; then
(sleep $TIMEOUT; kill $pid) &
wait $pid
fi
done < /tmp/ip.txt
*Se alguém tiver alguma solução melhor, desde já eu agradeço,
Alexandre Mulatinho.
Em 12 de setembro de 2012 08:49, Alexandre Mulatinho
<address@hidden>escreveu:
> Fala turma,
>
> Bom dia! Tô com uma dúvida para melhorar a performance de um script e
> gostaria da ajuda de vocês.
>
> Tenho a situação em que recebo uma lista de IPs (1000+) e começo a fazer
> WHOIS para saber o ISP deles, é mais ou menos assim:
> *
> while read IP;
> do
> whois $IP | grep informacoes uteis.. | sed ...
> done < lista_de_IPs.txt
> *
> O script funcionava muito bem mas depois que ele foi migrado para uma
> máquina nova ele passou a parar no whois, imagino eu que seja um problema
> de rede, mas não gostaria de 'aperriar' a turma de redes com isso, queria
> então fazer o seguinte:
>
> 1) rodar o whois
> 2) verificar se esse whois ta demorando mais do que 30 segundos
> 2.1) se sim, dar um kill no processo e continuar
> 2.2) caso nao, continuar normal
>
> Pensei em algo assim:
> *whois $IP &
> ret=$!
> trap "echo kill -15 $ret" 2 # Será que tem algum trap pra esperar X
> minutos ?
> wait $ret*
>
> Claro, isso funcionaria se eu fosse danto CTRL+C, só que o script roda sem
> controle do usuário via cron então não é a solução, não sei se eu
> conseguiria neste loop guardar o pid do processo em um arquiivo e fazer um
> check nos arquivos que estao demorando mais de 30 segundos para sumirem e
> dar kill, bom, acho que tbm não deve ser a melhor situação e por isso
> gostaria de pedir a ajuda de vocês para descobrir uma solução mais decente.
>
> Desde já agradeço,
>
> --
> Atenciosamente,
> *Alexandre Mulatinho*
>
--
Atenciosamente,
*Alexandre Mulatinho*
[As partes desta mensagem que não continham texto foram removidas]