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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] script de download


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] script de download
Date: Sat, 22 Oct 2005 20:40:50 -0200

Veja bem, vc não precisa pegar o tamanho do arquivo que vc esta
baixando pra saber quantos porcento do arquivo foi baixado. Quando vc
executa um wget com a opção -b vc gera um arquivo chamado wget-log e,
quando inicia o download ele tem o seguinte conteudo:

    0K .......... .......... .......... .......... ..........  0%   45.79 KB/s
   50K .......... .......... .......... .......... ..........  0%  180.05 KB/s
  100K .......... .......... .......... .......... ..........  1%   92.11 KB/s

po, ai vem todo um estudo de como pegar estes valores para jogar num
galge do dialog.

tentei de varias formas, esta funcionou. apos executar, lance estas linhas

#!/bin/bash
LOG="wget-log"
FILE="HelixPlayer-1.0.4-4.src.rpm"
MSG="Baixando o arquivo $FILE"
URL="ftp://ftp.linux.ncsu.edu/pub/fedora/linux/core/4/SRPMS/";
error() {echo "fail to load $FILE in $URL" ; exit 1;}

(wget -o $LOG -b ${URL}${FILE} || error && tail -f $LOG | while read LINHA
do echo $LINHA | grep % | cut -f 2 -d K | cut -d % -f 1 | sed 's/[^0-9]//g'
done) | dialog --gauge "$MSG" 8 40 0

por partes:
0) se o wget executa corretamente, ele chama o tail-f por meio do &&
1) o tail -f <arquivo> mostra o final do arquivo em tempo de voo, ou
seja, conforme o arquivo eh atualizado, ele mostra na tela.
2) uso o while read linha para ler cara linha do wget e processa-la.
3) o grep % pega só as linhas que tem a informação
4) o primeiro cut tira o tamanho do arquivo que foi baixado.
5) o segundo cut tira o que tem de informação depois de '%'
6) o sed transforma tudo que não seja algarismos em nada
7) o | dialog --gauge... manda o resultado para o gauge, pode demorar
dependendo do tamanho do arquivo.
8) se o wget não puder executar, chama a função error com o ||

pra entender melhor, executa o tail -f até o | dialog e vai alterando
os pipes, retirando alguns, observando o fluxo de dados.não foi facil
usar sed junto de tail -f, não sei por que tive que enfiar um while
ai, mas de repente alguem descobre uma maneira mais facil. =)

Tem alguns problemas mas... ta 90% pronto.
[]s
Tiago

>  > Em 22/10/05, jackson braga<address@hidden> escreveu:
>  > > olá estava fazendo um script que fize-se a contagem de download em uma
>  > > barra
>  > > de contagem usando shellscript e dialog, ate aew tudo bem, mais quando
>  > > execulto o script a barra nao sai de 0% e nem faz o download do
> arquivo,
>  > > alguem poderia me ajudar segue o script.
>  > >
>  > > abs
>  > >
>  > >
>  > > #!/bin/bash
>  > > TITLE = "Fazendo download..."
>  > > MSG = "Fazendo download do arquivo..."
>  > > INTERVALO = 1
>  > > FILE =
>  > >
> "http://www.linuxti.pro.br/patchs/netqmail-1.05-dns.patch";
>  > > die() { echo "Erro: $*" ; exit 1; }
>  > > sizeof() { du -h "$1" | cut -f1; }
>  > > running(){ ps $1 | grep $1 > /dev/null; }
>  > > # faz o download do $FILE aqui
>  > > wget -b $FILE
>  > > CPPID=$!
>  > > trap "$CPPID" 2 15
>  > > (
>  > > while running $CPPID; do
>  > > COPIADO=$(sizeof $FILE)
>  > > echo $COPIADO" copiados..."
>  > > sleep $INTERVALO
>  > > done
>  > > )
>  > > dialog --title "$TITLE" --gauge "$MSG" 8 40 0
>  > >
>  > > ---
>  > >
>  > > abs
>  > >
>  > > --
>  > > Jackson Braga
>  > >
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  > >
>  > >
> ---------------------------------------------------------------------
>  > > Esta lista não admite a abordagem de outras liguagens de programação,
>  > como
>  > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>  > prévio
>  > > aviso.
>  > >
> ---------------------------------------------------------------------
>  > > Sair da lista:
> address@hidden
>  > >
> ---------------------------------------------------------------------
>  > > Esta lista é moderada de acordo com o previsto em
>  > > http://www.listas-discussao.cjb.net
>  > >
> ---------------------------------------------------------------------
>  > >
>  > >
>  > >
>  > >
>  > > Yahoo! Grupos, um serviço oferecido por:
>  > >
>  > > ________________________________
>  > > Links do Yahoo! Grupos
>  > >
>  > >
>  > > Para visitar o site do seu grupo na web, acesse:
>  > > http://br.groups.yahoo.com/group/shell-script/
>  > >
>  > > Para sair deste grupo, envie um e-mail para:
>  > > address@hidden
>  > >
>  > > O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço
>  > do
>  > > Yahoo!.
>  >
>  >
>  >
> ---------------------------------------------------------------------
>  > Esta lista não admite a abordagem de outras liguagens de programação,
> como
>  > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio
>  > aviso.
>  >
> ---------------------------------------------------------------------
>  > Sair da lista:
> address@hidden
>  >
> ---------------------------------------------------------------------
>  > Esta lista é moderada de acordo com o previsto em
>  > http://www.listas-discussao.cjb.net
>  >
> ---------------------------------------------------------------------
>  >
>  >
>  >
>  >  *Yahoo! Grupos, um serviço oferecido por:*
>  > ------------------------------
>  > *Links do Yahoo! Grupos*
>  >
>  >    - Para visitar o site do seu grupo na web, acesse:
>  >    http://br.groups.yahoo.com/group/shell-script/
>  >    - Para sair deste grupo, envie um e-mail para:
>  >
> address@hidden<address@hidden?subject=Unsubscribe>
>  >    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
>  >    Serviço do Yahoo!
> <http://br.yahoo.com/info/utos.html>.
>  >
>  >
>
>
>  --
>  Jackson Braga
>  55 92 9159-8940
>  TI - Loginet Informatica Ltda
>
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>
>
>
> ---------------------------------------------------------------------
>  Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
>  Sair da lista: address@hidden
> ---------------------------------------------------------------------
>  Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>
>
>
>
>  Yahoo! Grupos, um serviço oferecido por:
>
>  ________________________________
>  Links do Yahoo! Grupos
>
>
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/shell-script/
>
> Para sair deste grupo, envie um e-mail para:
> address@hidden
>
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.


reply via email to

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