Portál AbcLinuxu, 17. července 2025 22:28


Dotaz: Bash script Zenity ukazatel procent

pepe_ avatar 2.9.2010 19:44 pepe_ | skóre: 48
Bash script Zenity ukazatel procent
Přečteno: 565×
Odpovědět | Admin
stahovany link : http://epos.ufe.cz/download/inv/epos-tdp.tgz

Tady je script pro zenity
#!/bin/bash
nazev="http://epos.ufe.cz/download/inv/epos-tdp.tgz"
DOWNLOAD() {
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
wget -c $nazev 2>&1 | while read data;do
if [ "`echo $data | grep '^Length:'`" ]; then
total_size=`echo $data | grep "^Length:" | sed 's/.*\((.*)\).*/\1/' | tr -d '()'`
fi
if [ "`echo $data | grep '[0-9]*%' `" ];then
percent=`echo $data | grep -o "[0-9]*%" | tr -d '%'`
current=`echo $data | grep "[0-9]*%" | sed 's/\([0-9BKMG.]\+\).*/\1/' `
speed=`echo $data | grep "[0-9]*%" | sed 's/.*\(% [0-9BKiMG.]\+\).*/\1/' | tr -d ' %'`
remain=`echo $data | grep -o "[0-9A-Za-z]*$" `
echo $percent
echo "#Stahuji $nazev\nStaženo $current což je $total_size ($percent%)\nRychlost : $speed\nZa : $remain bude soubor stažen."
fi
done > $pipe &

wget_info=`ps ax |grep "wget.*$nazev" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `

zenity --progress --auto-close --text="Připojuji se k $nazev\n\n\n" --width="350" --title="Stahuji ..."< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}
DOWNLOAD "$nazev"

kill -9 `echo $wget_pid` 2>/dev/null
Pomuzete prosim aby se ukazovala spravne rychlost prenosu a taky staženo kolik z kolika ?

Nechápu sed . Poradíte ?

jinak při změně nazev="http://epos.ufe.cz/download/inv/epos-tdp.tgz" na nazev=$1 se bude stahovat to co bude parametrem.

Popřípadě jsou tam ještě nějaké chyby ?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.9.2010 20:37 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim.

U mna to ide v poriadku, ja som si nevsimol nic, co by bolo spatne, ak hovorime o poskytovanych informaciach.Skus upresnit, kde konkretne sa ti to nezda alebo za akych situacii.

Co sa tyka sed a regularnych vyrazov obecne: http://www.abclinuxu.cz/clanky/programovani/regularni-vyrazy

pepe_ avatar 4.9.2010 03:01 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
občas u rychlosti píše jen číslo , občas za to napíše k .. Chci aby to rychlost ukazovalo i s formántem tj ne 1 ale 1k/s 1m/s prostě nevim čeho rychlost...

Občas to ukazuje jam má ale většinou ne
4.9.2010 20:02 deadmail
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
Vloz tu vypis wget-u (SUBOR):
nazev="http://epos.ufe.cz/download/inv/epos-tdp.tgz"
wget -c "$nazev" &>SUBOR
pepe_ avatar 4.9.2010 22:34 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
--2010-09-04 22:27:40--  http://epos.ufe.cz/download/inv/epos-tdp.tgz
Navazuje se spojení s 127.0.0.1:3128… spojeno.
Proxy požadavek odeslán, program čeká na odpověď… 206 Partial Content
Délka: 31145030 (30M), 23249901 (22M) zbývá [application/x-tar]
Ukládám do: „epos-tdp.tgz“

        [ přeskakuje se 7700 K ]
  7700K ,,,,,,,,,, .......... .......... .......... .......... 25%  506  15h57m
  7800K .......... .......... .......... .......... .......... 25% 48,5K 8m0s
  7850K .......... .......... .......... .......... .......... 25% 60,2K 7m19s


problem je když se mění b/s na K/s ci M/s

5.9.2010 05:26 deadmail
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
Problem je teda v jazyku ;-) (LANG, LC_ALL)

Dany skript hlada "Length", ale tvoj vystup obsahuje cesky "Delka" a takisto berie rychlost ako cisla s desatinou bodkou a nie ciarkou (preto berie len cislo po desatinnu ciarku).

Ja by som zmenil jazyk pri spustani wget:
LANG="en_US.UTF-8" wget ...
A ak tam je niekedy b/s (male b), tak bude problem aj v tom...
pepe_ avatar 5.9.2010 11:53 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Bash script Zenity ukazatel procent
Velmi děkuji , to byl ten problém.

Takže po úpravě :
#!/bin/bash
#/usr/bin/stahni
nazev=$1
DOWNLOAD() {
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
LANG="en_US.UTF-8" wget -c $nazev 2>&1 | while read data;do
if [ "`echo $data | grep '^Length:'`" ]; then
total_size=`echo $data | grep "^Length:" | sed 's/.*\((.*)\).*/\1/' | tr -d '()'`
fi
if [ "`echo $data | grep '[0-9]*%' `" ];then
percent=`echo $data | grep -o "[0-9]*%" | tr -d '%'`
current=`echo $data | grep "[0-9]*%" | sed 's/\([0-9BKMG.]\+\).*/\1/' `
speed=`echo $data | grep "[0-9]*%" | sed 's/.*\(% [0-9BKiMG.]\+\).*/\1/' | tr -d ' %'`
remain=`echo $data | grep -o "[0-9A-Za-z]*$" `
echo $percent
domena=${nazev#*//}
echo "#Stahuji soubor : ${nazev##*/} z ${domena%%/*} \nStaženo $current z $total_size ($percent%)\nRychlost : $speed\nZa : $remain bude $
fi
done > $pipe &
wget_info=`ps ax |grep "wget.*$nazev" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `
zenity --progress --auto-close --text="Připojuji se k $nazev\n\n\n" --width="350" --title="Stahuji ..."< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}
DOWNLOAD "$nazev"
kill -9 `echo $wget_pid` 2>/dev/null
Nedá se dialog umístit vpravo dole a ne centrovat ho uprostřed obrazovky ? Popřípadě jak dialog pustit minimalizovaně ?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.