shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]