Portál AbcLinuxu, 8. listopadu 2025 02:26
Řešení dotazu:
wget http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De bash: chyba syntaxe poblíž neočekávaného tokenu „;;“
'...') nebo dvojité ("...").
#!/bin/bash
##/usr/bin/stahni
cd ~/Plocha
cd ~/Desktop
nazev="$1"
DOWNLOAD() {
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
LANG="en_US.UTF-8" wget -c --limit-rate=50k '$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 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
a on to nezkousne
přes flashgot plugin firefoxu a do něj dam vlastní script a ten umístim do /usr/bin/st... no a ve flashgot dam parametr spuštění [URL] , což funguje na většinu věcí ale na tyto odkazy s & to nejede.Tak v tom případě je problém ve flashgot. Ten by měl URL předat v uvozovkách. Pokud tak neučiní, tak bude URL nekompletní a nic nestáhne. Jako workaround můžeš zkusit třeba [UFILE] a ten si zpracovat sám.
Tak v tom případě je problém ve flashgot. Ten by měl URL předat v uvozovkách. Pokud tak neučiní, tak bude URL nekompletní a nic nestáhne. Jako workaround můžeš zkusit třeba [UFILE] a ten si zpracovat sám.
<ftip>Jdu zkusit, jestli by pomocí této chyby nešel podstrčit systému nějaký vlastní příkaz.</ftip>
Není tam možnost si parametry předávané skriptu upravit? Například jako je to v Xfce můj_skript.sh --parametr "%u".
cat $file |while read url do /usr/bin/stahni "$url" doneTřeba takhle (netestováno, mírně upraveno)
#!/bin/bash
##/usr/bin/stahni
cd ~/Plocha
cd ~/Desktop
DOWNLOAD() {
url="$1"
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
LANG="en_US.UTF-8" wget -c --limit-rate=50k '$url' 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=${url#*//}
echo "#Stahuji soubor : ${url##*/} z ${domena%%/*} \nStaženo $current z $total_size ($percent%)\nRychlost : $speed\nZa : $remain bude soubor stažen."
fi
done > $pipe &
wget_info=`ps ax |grep "wget.*$url" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `
zenity --progress --auto-close --text="Připojuji se k $url\n\n\n" --width="350" --title="Stahuji ..."< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}
nazev="$1"
if [ "$nazev" = "-f" ]
then
soubor="$2"
# TODO: kontrola, že soubor existuje
cat "$soubor" |while radek line
do
DOWNLOAD "$radek"
kill -9 `echo $wget_pid` 2>/dev/null
done
else
DOWNLOAD "$nazev"
kill -9 `echo $wget_pid` 2>/dev/null
fi
Script by pak bylo možno volat buď jen s jedním URL, nebo "-f nazev_souboru".
Tedy do flashget by se zadal řetězec: -f [UFILE]
Opravená verze (možná bude i fungovat)
#!/bin/bash
##/usr/bin/stahni
cd ~/Plocha
cd ~/Desktop
DOWNLOAD() {
url="$1"
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
LANG="en_US.UTF-8" wget -c --limit-rate=50k "$url" 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="${url#*//}"
echo "#Stahuji soubor : ${url##*/} z ${domena%%/*} \nStaženo $current z $total_size ($percent%)\nRychlost : $speed\nZa : $remain bude soubor stažen."
fi
done > $pipe &
wget_info=`ps ax |grep "wget.*$url" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `
zenity --progress --auto-close --text="Připojuji se k $url\n\n\n" --width="350" --title="Stahuji ..."< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}
nazev="$1"
if [ "$nazev" = "-f" ]
then
soubor="$2"
# TODO: kontrola, že soubor existuje
cat "$soubor" |while read radek
do
DOWNLOAD "$radek"
kill -9 `echo $wget_pid` 2>/dev/null
done
else
DOWNLOAD "$nazev"
kill -9 `echo $wget_pid` 2>/dev/null
fi
#!/bin/bash
##/usr/bin/stahni
cd ~/Plocha
cd ~/Desktop
DOWNLOAD() {
url="$1"
rand="$RANDOM `date`"
pipe="/tmp/pipe.`echo '$rand' | md5sum | tr -d ' -'`"
mkfifo $pipe
LANG="en_US.UTF-8" wget -c --limit-rate=50k "$url" 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="${url#*//}"
echo "#Stahuji soubor : ${url##*/} z ${domena%%/*} \nStaženo $current z $total_size ($percent%)\nRychlost : $speed\nZa : $remain bude soubor stažen."
fi
done > $pipe &
wget_info=`ps ax |grep "wget.*$url" |awk '{print $1"|"$2}'`
wget_pid=`echo $wget_info|cut -d'|' -f1 `
zenity --progress --auto-close --text="Připojuji se k $url\n\n\n" --width="350" --title="Stahuji ..."< $pipe
if [ "`ps -A |grep "$wget_pid"`" ];then
kill $wget_pid
fi
rm -f $pipe
}
nazev="$1"
if [ "$nazev" = "-f" ]
then
soubor="$2"
# TODO: kontrola, že soubor existuje
cat "$soubor" |while read radek
do
DOWNLOAD "$radek"
kill -9 `echo $wget_pid` 2>/dev/null
done
else
DOWNLOAD "$nazev"
kill -9 `echo $wget_pid` 2>/dev/null
fi
[UFILE]. Celé vlákno je o tom, že nikdo neví, co vlastně chcete, o co se pokoušíte a co vám nefunguje.
ale to nic nemění na tom že nejde stáhnout http://www.uloz.to/6693613/na-hrane-temnoty-cz-dabing-2010-avi . a každej jinej kterej má diakritiku. Zatim se teda řešení nehlo ani o milimetr.Flashgot by v tomhle případě měl předat url, kde budou "nebezpečné" znaky nahrazeny HTML entitami (připadně mít takovou možnost) -> další bug/wish report na autora FlashGot.
předat url, kde budou "nebezpečné" znaky nahrazeny HTML entitamiNe HTML entitami, ale zakódované pomocí URL encoding.
Ten soubor s odkazama tam je , jenže v něm neni ukončená řádka a tak to nefunguje pokud v tom seznamu přidam ukončení řádky pak to jde.Tak si ho do toho souboru přidej:
... soubor="$2" echo >> "$soubor" # TODO: kontrola, že soubor existuje cat "$soubor" |while read radek ...
Jak už někdo podotkl, různé servery mají formáty url a můžou třeba využívat cookies. V tom případě nebude stahování přes wget fungovat, protože ta potřebná cookies (většinou tam je session ID) jsou ve firefoxu a wget je pak brán jako nová session. Taky se to dá řešit, ale je to složitější a musí se to napasovat na konkrétní server.
+ cd /home/marian/Plocha
stahni: řádek 3: cd: /home/marian/Plocha: Adresář nebo soubor neexistuje
+ cd /home/marian/Desktop
+ nazev=-f
+ '[' -f = -f ']'
+ soubor=/home/marian/stahuj.url
+ cat /home/marian/stahuj.url
+ read radek
+ DOWNLOAD 'http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
+ url='http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ date
+ rand='17578 Ne lis 28 22:04:53 CET 2010'
++ echo '$rand'
++ tr -d ' -'
++ md5sum
+ pipe=/tmp/pipe.686fd43dd4a94cc2b741dd83ccdf6fc2
+ mkfifo /tmp/pipe.686fd43dd4a94cc2b741dd83ccdf6fc2
+ LANG=en_US.UTF-8
++ ps ax
+ wget -c --limit-rate=50k 'http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ awk '{print $1"|"$2}'
++ grep 'wget.*http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
+ wget_info='27308|pts/1'
++ cut '-d|' -f1
++ echo '27308|pts/1'
+ wget_pid=27308
+ zenity --progress --auto-close '--text=Připojuji se k http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De\n\n\n' --width=350 '--title=Stahuji ...'
+ read data
++ grep '^Length:'
++ echo --2010-11-28 22:04:53-- 'http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
+ '[' '' ']'
++ echo '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ grep '[0-9]*%'
+ '[' '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De' ']'
++ tr -d %
++ echo '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ grep -o '[0-9]*%'
+ percent='
4'
++ sed 's/\([0-9BKMG.]\+\).*/\1/'
++ echo '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ grep '[0-9]*%'
+ current=--2010
++ sed 's/.*\(% [0-9BKiMG.]\+\).*/\1/'
++ tr -d ' %'
++ echo '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
++ grep '[0-9]*%'
+ speed='--2010-11-2822:04:53--http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na20hranC49B20temnoty20CZ202010.avi?bD&u=0&c=1663151489&De'
++ grep -o '[0-9A-Za-z]*$'
++ echo '--2010-11-28 22:04:53-- http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
+ remain=De
+ echo 4
+ domena='dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De'
+ echo '#Stahuji soubor : Na%20hran%C4%9B%20temnoty%20CZ%202010.avi?bD&u=0&c=1663151489&De z dl.s7.uloz.to \nStaženo --2010 z (
4%)\nRychlost : --2010-11-2822:04:53--http://dl.s7.uloz.to/Ps;Hs;fid=6678716;cid=1663151489;rid=944376995;up=0;uid=guest;uip=89.102.245.179;tm=1290726608;ut=f;aff=uloz.to;He;ch=7402da212850a87aaa542d1b5ec15118;cpnb=126;cput=kuzz;cptm=1290642281;;;Pe/6678716/Na20hranC49B20temnoty20CZ202010.avi?bD&u=0&c=1663151489&De\nZa : De bude soubor stažen.'
+ read data
++ echo Resolving dl.s7.uloz.to... 95.168.207.66, 95.168.207.67, 95.168.207.68, ...
++ grep '^Length:'
+ '[' '' ']'
++ echo 'Resolving dl.s7.uloz.to... 95.168.207.66, 95.168.207.67, 95.168.207.68, ...'
++ grep '[0-9]*%'
+ '[' '' ']'
+ read data
++ echo Connecting to 'dl.s7.uloz.to|95.168.207.66|:80...' connected.
++ grep '^Length:'
+ '[' '' ']'
++ echo 'Connecting to dl.s7.uloz.to|95.168.207.66|:80... connected.'
++ grep '[0-9]*%'
+ '[' '' ']'
+ read data
++ echo HTTP request sent, awaiting response... 503 Service Temporarily Unavailable
++ grep '^Length:'
+ '[' '' ']'
++ echo 'HTTP request sent, awaiting response... 503 Service Temporarily Unavailable'
++ grep '[0-9]*%'
+ '[' '' ']'
+ read data
++ echo 2010-11-28 22:04:53 ERROR 503: Service Temporarily Unavailable.
++ grep '^Length:'
+ '[' '' ']'
++ echo '2010-11-28 22:04:53 ERROR 503: Service Temporarily Unavailable.'
++ grep '[0-9]*%'
+ '[' '' ']'
+ read data
++ echo
++ grep '^Length:'
+ '[' '' ']'
++ echo ''
++ grep '[0-9]*%'
+ '[' '' ']'
+ read data
(zenity:27313): Gtk-WARNING **: Failed to set text from markup due to error parsing markup: Error on line 1: Entity did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &
++ grep 27308
++ ps -A
+ '[' '' ']'
+ rm -f /tmp/pipe.686fd43dd4a94cc2b741dd83ccdf6fc2
++ echo 27308
+ kill -9 27308
+ read radek
BTW: ještě ti tam chybí něco jako
sed 's/&/&/g'Jo a procenta v tom odkazu jsou, tam mi řekni jde máš problém. To se ti nelíbí procenta v dialogovém okně? Nejlíp když pošleš stejný log jako je výše. Z toho se dá něco vyčíst.
uvoz='"' url=$uvoz"$1"$uvoz$"" xterm -e "wget $url"funguje ale když tam dam
uvoz='"' url=$uvoz"$1"$uvoz$"" xterm -e "wget --limit-rate=50k $url"nebo
uvoz='"' url=$uvoz"$1"$uvoz$"" xterm -e "wget -c $url"tak to nefunguje... Kde je teda chyba ?
wget --limit-rate=50k -c "$url"
xterm -e wget --limit-rate=50k -c "$url"Testovat byste to snad měl vy, ne? Nenapíšete co chcete, co děláte, co vám to dělá, když vám někdo něco poradí, vyzkoušet to taky nechcete…
#!/bin/bash cd ~/Desktop cd ~/Plocha xterm -e wget -c --limit-rate=50k "$1"Takže chyba je někde v implementaci scriptu ale nevim kde. Prozatim použiju tenhle úděs...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.