Portál AbcLinuxu, 3. listopadu 2025 02:30
#!/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:
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
wget-u (SUBOR):
nazev="http://epos.ufe.cz/download/inv/epos-tdp.tgz" wget -c "$nazev" &>SUBOR
--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
(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...
#!/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ě ?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.