abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:22 | Upozornění

    Společnosti Ticketmaster byla odcizena databáze s osobními údaji (jméno, adresa, telefonní číslo a část platebních údajů) 560 miliónů zákazníku. Za odcizením stojí skupina ShinyHunters a za nezveřejnění této databáze požaduje 500 tisíc dolarů [BBC].

    Ladislav Hagara | Komentářů: 1
    31.5. 23:55 | Nová verze

    Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    31.5. 17:33 | Nová verze

    Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.

    Ladislav Hagara | Komentářů: 27
    31.5. 17:11 | Komunita

    Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.

    Ladislav Hagara | Komentářů: 4
    31.5. 12:55 | Nová verze

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    31.5. 11:22 | Zajímavý článek

    David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …

    Ladislav Hagara | Komentářů: 9
    30.5. 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    30.5. 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 17
    Rozcestník

    down-rapid

    4.1.2009 20:06 | Přečteno: 3400× | Stahovaci skripty | Výběrový blog

    Takže jsem se konečně dostal k tomu, abych sem hodil další stahovací skriptík, tentokrát pro rapidshare.com. Tak doufám, že některým se bude hodit a budou rádi, že jsem ho sem dal.

    A teď už k věci, trošku to popíšu, protože to už neni pár řádek jako posledně. Možná se z toho někdo poučí, naopak, někteří sem budou určitě psát, že jde něco řešit líp, např. používat grep, sed příp. awk místo perlu. Přestože je to trošku složitější skript, psal jsem ho prostě úplně jednoduše a Perl používám právě proto, že jsem línej kombinovat více grepů a sedů a psát nějaký šílený regexpy, když v Perlu to jde o hodně jednodušejc.

    Na začátku skriptu se načte seznam proxy serverů. Já to používám tak, že mám přes SSH vytvořené tunely na tinyproxy servery běžící na různých serverech a pak jako proxy používám ty tunely. Např. localhost:3000 je přes SSH tunel směřovanej na tinyproxy na serveru A, localhost:3001 je směřovanej na tinyproxy na serveru B. Používám tinyproxy, protože na Debianu se ihned po instalaci tinyproxy spusti, poslouchá na portu 8888 a přístup je omezen právě z localhostu. Samozřejmě můžete si nainstalovat jakýkoliv jiný proxy, ale já ten tinyproxy instaluju jen kvůli tomu stahování, takže po dokončení stahování ho zase odinstaluju (purge), takže nemusím dělat složitou konfiguraci. Jinak instalaci provádím právě tím skriptíkem sshmulti (http://www.abclinuxu.cz/blog/RoboShim/2008/6/sshmulti-sshm), takze na aktuálně na 18 serverech nainstaluju tinyproxy jedním příkazem a nemusím se s tím nějak složitě dělat.

    Soubor s proxy má jednoduchý formát, prostě SSH server|http://proxy:port. Důležitá je přitom pouze ta adresa proxy, ten SSH je pouze pro výpis nápovědy. Jinak ten tunel na SSH server můžete vytvářet buď pomocí parametrů u ssh (-L localport:remotehost:remoteport), což je ale v případě použítí sshmulti dost nešikovné, nebo si pro používané SSH servery nastavit PortForward v ~/.ssh/config přidáním rádky LocalFoward localport remotehost:remoteport. Já mám takhle pro každý server vlastní konfiguraci, takže při hromadném připojení se mi tunely vytvoří. Pokud byste měli servery s proxy daemonama v jedné síti, tak se můžete SSHckem připojit pouze a jeden server v té síti a udělat tunely pro různé lokální porty a ty pak z toho SSH serveru směřovat na různé proxy servery, vyjádřeno SSH konfigurací asi takhle:

    Host SSH.server.domain.com
      LocalForward 3000 proxy1.domain.com:8888
      LocalForward 3001 proxy2.domain.com:8888
      LocalForward 3002 proxy3.domain.com:8888
    
    Přístup na těch proxy serverech pak stačí povolit pouze z toho SSH serveru. Pokud chcete použít pouze přístup přímo z lokálního serveru bez proxy, tak v souboru s proxy zadejte pouze "NONE" místo proxy URL.

    Když už máte takhle seznam proxy serverů, tak na začátku skriptu se projdou parametry a můžete trochu upravit seznam proxy serverů, které se skutečně použijou. Pokud nezadáte žádný parametr pro manipulaci se seznamem proxy, použijou se všechny proxy. Pokud zadáte parametr -a (jako ADD), tak se do prázdého seznamu budou přidávat pouze zadané proxy z originálního seznamu. Naopak, pokud použijete -d (jako DELETE), tak se originální seznam zkopíruje celý a budou se proxy odebírat. ADD a DELETE udáváte číslem, které zastupuje proxy server v originálním seznamu. Kromě toho můžete použít taky přepínač -p (jako PROXY) a tam zadáte plnou URL proxy serveru.

    Dál můžete zadat přepínač -r (RATE), kterým limitujete rychlost stahování wgetem (man wget --limit-rate). Dál jsou tam dva přepínače -c (CONSOLE) a -x (Xka), kterýma vynucujete použití konzole nebo Xek. Samozřejmě, že pokud budete spouštět přes SSH terminál bez X-forwardu a vynutíte Xka, tak to bude "zlobit". Na druhou stranu můžete v Xkách vynutit konzoli a zadávat CAPTCHA kód na konzoli.

    No a dostali jsme se k hlavnímu cyklu, kterej se provádí, dokud jsou nějaké URL ke stahování. Nejdřív se otestuje, jestli už soubor z URL neexistuje a když existuje, tak se přeskočí s hlášením. To je opatření, aby náhodou stahovač zbytečně nestahoval už stažený soubor. No a když neexistuje, tak se jde ke stahování.

    Postup se téměř opakuje: přečíst stránku, vyparsovat hodnoty, připravit další request. Nejdřív se přečte první stránka ze zadaného URL. Tam je formulář na výběr stažený jako registrovaný uživatel nebo free. Já taham free, takže se vyhledá URL pro správné tlačítko. Vyšle se teda request pro nalezené URL s těmi správnými POST daty. V dalším výstupu už jsou ta důležitá data. Buď je v HTML stránce text, že jste vypotřebovali váš stahovací limit a musíte nějakou dobu čekat (podle mých zkušeností tak 50-120 minut). V tom případě se použije další proxy. Pokud jste limit nepřesáhli a můžete stahovat, najde se v textu obrázek CAPTCHA, čas pro čekání před stahováním (obvykle 60-120 sekund), popis pro zadání kódu, jméno stahovaného souboru a hlavně URL pro stažení.

    Jenom vsuvku uvedu, že Rapidshare je dost aktivní v úpravách systému, takže během psaní tohoto textu změnili typ CAPTCHA (zrušili koťátka a štěňátka a zobrazujou CAPTCHA v 3D drátovém modelu znaků vytlačených do plochy) a dál URL pro zobrazení CAPTCHA kódu už není čistý HTML, ale do stránky to vypisuje JavaScript a používají operátor spojování řetězců, znak plus "+".

    A ještě jednu vsuvku. Než jsem se dostal k tomu, abych tenhle skript vystavil, tak se rapid rozhodnul zrušit CAPTCHA úplně, takže je teď jeden z těch lepší sdílečů, který nepožaduje interaktivní práci. I přesto jsem kód pro captcha nechal, kdyby se ho někdy v budoucnu rozhodli zase vrátit, tak to bude aspoň jednodušší.

    Dále se z odstavce před vsuvkou pokračuje tím, že se počká zadaný čekací čas před stahováním. Následující popis práce s CAPTCHA samozřejmě platí pouze tehdy, pokud je CAPTCHA obrázek nalezen. Pak se stáhne obrázek CAPTCHA. Pokud je skript spuštěný z terminálu z X serveru a nebyla požadována konzole, tak se obrázek zobrazí v gqview (tohle je jedna z dependencies, ale můžete si prohlížeč samozřejmě změnit) a dále se zobrazí Xdialog (druhá dependence) a tím se přečte kód a po zadání kódu se gqview zakilluje a captcha smaže. Pokud skript neběží v Xkách nebo byla požadována pouze konzole, tak se obrázek nezobrazí a na konzoli se požaduje zadání kódu. Obrázek můžete zobrazit více způsoby: (a) stažením na lokální stanici s prohlížečem obrázků, (b) nastavení web serveru pro /tmp (případně si můžete ve skriptu změnit) a zobrazení obrázku ve web browseru, (c) zobrazením obrázku pomoci nejaké ASCII-art knihovny (např. aa nebo caca), ale netuším, jak dobře tu CAPTCHu dokážete rozeznat.

    No a když zadáte kód, tak se připraví POST data a wgetem se stáhne soubor.

    No a skript je tady.

    #!/bin/bash
    
    proxiesfile="$HOME/.download-proxies"
    
    if ! [ -e "$proxiesfile" ];then
      echo "Please, create file $proxiesfile"
      exit
    fi
    
    allproxylist="$( awk -F '|' '{print $2;}' "$proxiesfile" | tr '\n' ' ' )"
    sshtunnels="$( awk -F '|' '$1~/^.+$/{print "  " $1,$2;}' "$proxiesfile" )"
    sshtunservers="$( awk -F '|' '$1~/^.+$/{print $1;}' "$proxiesfile" | tr '\n' ' ' )"
    
    agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
    
    console=0
    
    if [ $# -gt 0 ];then
    
      i=$#
      while [ $i -gt 0 ];do
        case "$1" in
          -a)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              proxylist="$proxylist $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | sed -n "${id}p" )"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -d)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
              proxylist="$( echo "$proxylist" | tr -s '[[:space:]]' '\n' | sed "${id}d" )"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -r)
            if [ $# -gt 1 ];then
              rate="--limit-rate=$2"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -p) 
            if [ $# -gt 1 ];then
              proxylist="$proxylist $2"
              shift 2
              i=$[$i-1]
            else
              echo "value please"
              exit
            fi
          ;;
          -c)
            console=1
            shift
          ;;
          -x)
            console=0
            shift
          ;;
          *)
            v="$1"
            shift 1
            set -- "$@" "$v"
          ;;
        esac
        i=$[$i-1]
      done
    
      if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
    
      while [ $# -gt 0 ];do
    
        if [ -e "$( basename "$1" )" ] && [ -s "$( basename "$1" )" ];then
          echo "File $( basename "$1" ) already exists and is not empty, not downloading, please delete it if you want to download"
        else
    
          echo "Downloading URL: $1"
    
          for proxy in $proxylist ;do
            if [ "$proxy" = "NONE" ];then
              unset http_proxy
            else
              export http_proxy="$proxy"
            fi
    
            echo "HTTP PROXY: $http_proxy"
            echo "GET 1: $1"
            output1="$( wget $rate -U "$agent" -nv -O - "$1" )"
            url="$( echo "$output1" | perl -e 'undef $/;$a=<STDIN>;print sprintf("%s",$url) if ((($tag)=($a=~m,(<form[^>]+id="ff"[^>]+>),is)) and (($url)=($tag=~m,action="([^"]+)",is)));' )"
            echo "GET 2 : $url"
            output2="$( wget $rate -U "$agent" -nv -O - --post-data="dl.start=Free" "$url" )"
            delay="$( echo "$output2" | perl -e 'undef $/; $a=<STDIN>;print "$1" if ($a=~m,var\s+c\s*=\s*(\d+)\s*;,is);' )"
            echo "DELAY: $delay"
            wait="$( echo "$output2" | perl -e 'undef $/; $a=<STDIN>;print "$1" if ($a=~m,(?:wait|try\s+again\s+in\s+(?:about)?)\s+(\d+\s+minutes?),is);' )"
            echo "WAIT: $wait"
            img="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>;print "$img" if (($img)=($a=~m,<img\s+src="([^"]+/access[^"]+)",is)) and ($img=~s/\x27\s*\+\s*\x27//g);' )"
            echo "IMG: $img"
            codetitle="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>; print "$1" if ($a=~m,(security\s+question[^\x27]+)\x27,is);' )"
            if echo "$codetitle" | grep -qE 'Have[[:space:]]+Fun';then happyhour=1;else happyhour=0;fi
            echo "CODETITLE: $codetitle"
            echo "HAPPYHOUR: $happyhour"
            file="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>;print "$1" if ($a=~m,<form\s+name="dlf?"\s+action="[^"]+/([^"/]+)",is);' )"
            echo "FILE: $file"
            url2="$( echo "$output2" | perl -e '
              undef $/;
              $a=<STDIN>;
              while (($u)=($a=~m,document\.dlf\.action=\\\x27([^\x27]+)\\\x27;,is)) {
                $a=~s,document\.dlf\.action=\\\x27([^\x27]+)\\\x27;,,is;
                print "$u\n" unless $u=~m,http://rs\d+tl\d*\.,i; 
              };' )"
            echo "URL2: $url2"
            echo "HTTP PROXY: $http_proxy"
            if [ -n "$file" ] && [ -n "$url2" ];then
              if [ $happyhour -eq 0 ];then
                if [ -n "$delay" ];then for i in `seq $delay -1 1`;do echo -en "waiting $delay seconds [ $i ]     \r";sleep 1;done;echo;fi
                printf "URL: %s\nFile: %s\nIMG Code: %s\n" "$url2" "$file" "$img"
                echo "HTTP PROXY: $http_proxy"
                if [ -n "$img" ];then
                  wget $rate -U "$agent" -nv -O "/tmp/$( basename "$img" )" -c "$img"
                  if [ -n "$DISPLAY" ];then gqview "/tmp/$( basename "$img" )" >/dev/null 2>&1 & pid="$!" ; fi
                  # display "$img" &
                  code=""
                  if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
                    while [ -z "$code" ];do code="$( Xdialog --wmclass 'down-rapid' --no-cancel --title "RapidShare downloader" --screen-center --stdout --inputbox "Enter the CAPTCHA code\\n($codetitle)" 14 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
                  else
                    while [ -z "$code" ];do read -p "Code ($codetitle) ['-' for stop]: " code;done
                  fi
                  if [ -n "$DISPLAY" ];then kill "$pid" ; fi
                  rm -f "/tmp/$( basename "$img" )"
                else
                  code="*"
                fi
                if [ "$code" != "-" ];then
                  ### code="$( echo "$code" | tr 'a-z' 'A-Z' )"
                  cmd="/bin/false"
                  echo "$url2" | ( IFS="|";while read url data;do
                      set -x
                      if [ "$code" = "*" ];then
                        codetxt=""
                      else
                        codetxt="&accesscode=$code"
                      fi
                      if [ -z "$data" ];then
                        actionstring="actionstring=1"
                      else
                        actionstring="actionstring=${data}"
                      fi
                      if wget $rate -U "$agent" -c -O "$file" --post-data="${actionstring}${codetxt}" "$url"; then break;fi
                      set +x
                    done 
                  )
                  if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 1000 ];then break;else echo "Unable to continue download";exit 1;fi
                else
                  exit 1
                fi
              else
                echo "$url2" | ( IFS="|";while read url data;do
                    set -x
                    if wget $rate -U "$agent" -c -O "$file" --post-data="actionstring=1" "$url"; then break;fi
                    set +x
                  done 
                )
                if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 1000 ];then break;else echo "Unable to continue download";exit 1;fi
              fi
            elif [ -n "$wait" ];then
              echo "Wait $wait"
            else
              echo "$output"
              exit 3
            fi
    
          done
          if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 100000 ];then true;else echo "Unable to continue download";exit 1;fi
    
        fi
    
        shift
      done
    
    
    else
      cat <<EndOfInfo
    
    ssh tunnels:
    $sshtunnels
    
    proxy list:
    $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | nl -v0 -w4 -s' -- ' )
    
    $sshtunservers
    
    Usage: $0 [ -a proxynum ] [ -d proxynum ] [ -r rate-limit ] [ -p proxyurl ] [ { -c | -x } ] URL ...
    -a proxynum
        add proxy at line proxynum
    -d proxynum
        delete proxy at line proxynum in ACTUAL proxy list
    -r rate-limit
        limit wget download rate
    -p proxyurl
        insert proxy specified by proxyurl
    -c
        use console to enter captcha code
    -x
        use X dialog to enter captcha code (this is default)
    URL
        URL to download
    EndOfInfo
    fi
    
           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    4.1.2009 22:20 kecal
    Rozbalit Rozbalit vše Re: down-rapid
    Osobne jsem skepticky k 'neprustrelnosti' podobnych bash skriptu.
    4.1.2009 22:35 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid

    Co presne myslis tou "neprustrelnosti"? Me to funguje, jak ma. A jak jsem psal u tech dalsich skriptu, kdyz to zmeni, tak skriptik upravim.

    4.1.2009 22:23 VRtulnikk | skóre: 17 | blog: blogisek | Rokycany
    Rozbalit Rozbalit vše Re: down-rapid
    Tak dlouho jsem řešil podobné věci, až jsem si koupil premium :)
    4.1.2009 23:20 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid

    Jo, taky jsem ted premyslel, ze bych si na stahnuti dalsich sezon Big Bang Theory koupil treba jenom 3-denni ucet pres telefon (PayPal nemam, zatim ho na nic nepotrebuju). To by se docela dalo, ale pak jsem si to znovu rozmyslel a opravdu se mi nevyplati to platit, kdyz polovina nalezenych odkazu rapidshare nefunguje a ze vsech stahovanych souboru polovinu stahnu pres jiny sdilece (megauploads, leteckaposta, ulozto). Navic obvykle taham 2-6 souboru tydne (Heroes, HIMYM a IT-Crowd), navic kdyz je pauza ve vysilani, tak ani to. Takze se mi opravdu nevyplati zarizovat premium ani na jeden den. Naposledy jsem tahal Dextra 3.sezonu (asi 12 dilu, z toho asi 3 dily z rapidu po 2 archivech, zbytek megaupload), pouzil jsem celkem asi jenom 5 proxy serveru a tahal jsem z mixu rapidshare a megaupload. A stahnul jsem to asi behem 3 hodin. Pak jsem jeste nasel Transporter 3 (6 archivu z rapidu). No a pak nic pres 3 tydny. Navic me vubec nebavi tahat to pres firefox - kdyz mi FF chcipne (nebo ho musim zabit), abych tahal znovu. Nehlede na vic soucasnych tahani pres ruzny proxy.

    Jinak samozrejme existuje spousta ruznych klientu pro premium ucty, takze muzes pouzit ty. Tohle je skriptik pro anonymni pristup.

    6.1.2009 17:58 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: down-rapid
    4.1.2009 23:19 Tomáš | skóre: 31 | blog: Tomik
    Rozbalit Rozbalit vše Re: down-rapid

     Pěkné. Jenom bych poradil, že to funguje i bez user-agent.  A chtěl bych se zeptat, dalo by se to udělat tak, aby se to stahovalo na ty jednotilvé servery, když na jednom je málo volného místa?

    4.1.2009 23:41 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid
    Pěkné.

    Diky

    Jenom bych poradil, že to funguje i bez user-agent.

    Je to mozny. Kdyz jsem to psal, tak mi to nejak nechodilo. Tak jsem experimentoval s ruznyma vecma (referer, user-agent, cookies) no a agent mi tam zustal. Tak jsem ho tam nechal - funkcnosti to neubira a ano to nezvysuje zatez. Sice to asi zrejme rapid nebude nikdy testovat (protoze je jednoduchy to padelat a testovani user-agent by zabralo vetsi namahu, nez pro klienta to padelat), ale i tak to muze zvysi sance na funkcnost. Ale samozrejme si to muzes odmazat.

    A chtěl bych se zeptat, dalo by se to udělat tak, aby se to stahovalo na ty jednotilvé servery, když na jednom je málo volného místa?

    Ja mam takhle k dispozici asi 5 serveru, kam muzu tahat a ukladat to tam, takze ten skript mam na tehle strojich a spoustim ho tam, kde potrebuju. Ty proxy servery jsou opravdu jenom kvuli tomu, aby se pouzila jina IP adresa.

    Kdybys to chtel ukladat na ruzny servery, tak by se dal asi udelat nejakej dalsi skriptik, kterymu bys dal seznam serveru, kam to chces tahat, ten by se pak pres SSH podival, kolik je mista a kdyz by bylo vic nez nejaky minimum, tak by to tam stahnul. Kdyby bylo malo, tak by mrknul na dalsi ssh server. Samozrejme by to vyzadovalo, abys mel login na ty servery pres klice, aby to neoxidovalo s heslem. A taky bys mel nastaveno NONE v ~/.download-proxies, aby to tahalo primo z toho serveru. Videl bych to na neco takovydleho:

    #!/bin/bash
    ## minimum volnyho mista 2GB
    minfree=$(( 2 * 1024 * 1024 * 1024 ))
    ## cilovy adresar, kam se ma stahovat
    downdir=/data/download
    if [ $# -lt 2 ];then
      echo "$0 URL ssh-server ssh-server ..."
    else
      URL="$1"
      shift
      while [ $# -gt 0 ];do
        if [ "$( ssh "$1" df -P -B 1 "$downdir" | tail -n1 )" -ge "$minfree" ];then
          ssh "$1" down-rapid "$URL"
          shift $(( $# - 1 ))
        fi
        shift
      done
    fi
    

    Samozrejme to netestuje, jestli to ten skript na tom serveru stahnul dobre. To se holt musi delat rucne, ale to, rekl bych, je uz drobnost.

    5.1.2009 15:13 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: down-rapid
    Uz pred vyse rokom som si spravil velmi podobny skript. Pritomnost X-iek som testoval podla premennej DISPLAY. V textovom mode som zobrazoval cez cacaview (Vdaka zoomu a antialiasingu sa dali citat aj tie enhanced obrazky so psami a mackami, aj ked to chvilu trvalo). Tiez od zaciatku pouzivam tunelovanie cez ssh na rozne proxy s rozdielom, ze tunely si otvara skript podla toho ako potrebuje. Navyse si vzdy osaha dostupne proxy a taha cez tu, na ktoru musi najmenej cakat. Do coho sa mi uz par mesiacov nechce je viacvlaknovost - aby jedna instancia skriptu vyuzivala vsetky proxy. Na druhej strane vytvara pomocne suborove zamky, takze nie je problem pustit vo viacerych terminaloch skript viackrat a oni sa uz dohodnu, aby nepouzivali rovnaku proxy v ten isty cas.
    If you hold a Unix shell up to your ear, you can you hear the C.
    5.1.2009 16:13 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid
    Uz pred vyse rokom som si spravil velmi podobny skript.

    Urcite nas bude vic:-)

    Pritomnost X-iek som testoval podla premennej DISPLAY.

    Presne tak testuju i ja, ale nechavam moznost neotravovat oknama a umoznuju nacteni captchi z console (ikdyz by to slo taky jednoduse vymazanim DISPLAY)

    V textovom mode som zobrazoval cez cacaview (Vdaka zoomu a antialiasingu sa dali citat aj tie enhanced obrazky so psami a mackami, aj ked to chvilu trvalo).

    Tak takhle drsnej teda opravdu nejsem:-) Ikdyz jsem nad tim premyslel, ze by to slo, opravdu si nejsem jistej, jak moc by to bylo pouzitelny.

    Tiez od zaciatku pouzivam tunelovanie cez ssh na rozne proxy s rozdielom, ze tunely si otvara skript podla toho ako potrebuje. Navyse si vzdy osaha dostupne proxy a taha cez tu, na ktoru musi najmenej cakat. Do coho sa mi uz par mesiacov nechce je viacvlaknovost - aby jedna instancia skriptu vyuzivala vsetky proxy. Na druhej strane vytvara pomocne suborove zamky, takze nie je problem pustit vo viacerych terminaloch skript viackrat a oni sa uz dohodnu, aby nepouzivali rovnaku proxy v ten isty cas.

    Tak klobouk dolu, takhle jsem to uz nedomakal. Taky tam mam kod, ktery zpusobi pouziti dalsi proxy, kdyz by se melo cekat dalsi dobu. Ale aby si to samo nahazovalo ssh tunel na tu proxy, zamky atd, to fakt delat nebudu (hlavne proto, ze tu proxynu vzdycky pred stahovanim rucne nainstaluju a po dokonceni stahovani zase odinstaluju, takze stejne to pripojeni musim rucne nahodit). Samozrejme je mozny spustit ten skript vickrat. Bud jim prepinacema reknes, ze maji pouzivat ruzny proxy, nebo to nechas, pak by se melo stat akorat to, ze pres nejakou proxynu bude stahovat jenom ten, kterej se na ni dostane prvni, ostatni asi budou mit hlasku, ze z ty IP adresy uz se stahuje (vida, tohle jsem nikdy nezkousel, osobne definuju rucne tu proxy, ktera se ma pouzit), nebo ze se musi pockat.

    5.1.2009 17:50 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: down-rapid
    Uzitocnost osahavania viacerych proxy a vyber tej, na ktoru treba cakat najmenej suvisi s rychlostou linky a dennou dobou. Pocas dna (teda pocas dna cca na vychodnom pobrezi USA) mi to taha okolo 60kB/s, takze 100MB file to stiahne cca za 30 minut. Potom 16 minut caka. Takze cca 65% taha a zvysok sa flaka. V noci to taha okolo 220kB/s, takze 100MB za 8 minut a zase caka 16 minut. Takze je uzitocny uz iba okolo 30% casu. Pri 3 proxy a ich automatickom vyhladavani by tahal teoreticky blizko 100%.

    Otvaranie ssh tunela nie je nic zlozite.
    ssh -L"localhost:`getfreeport`:$host":80 -aNT "$proxyhost" 2>/dev/null &
    Uzitocne je pouzivat prikaz "trap ... EXIT", aby po pade nemusel clovek rucne cistit otvorene spojenia.
    If you hold a Unix shell up to your ear, you can you hear the C.
    5.1.2009 21:06 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid

    JO, tak ten muj skript proste prochazi postupne vsechny, takze pokud maji vsechny nejaky cekani, tak to skonci bez stazeni. Pak staci spustit znovu, mrknout na nejmensi cas, hodit sleep pred ten prikaz a spustit znovu.

    Driv mi to z rapidu tahalo mezi 300-500kB/s, ted to jede tak 100-200kB/s, kdyz to vybehne na 300kB/s, tak je to opravdu dobry. Takze kdyz jsem driv tahal tech 500kB/s (100MB bylo asi za 3 minuty), tak se mi stavalo, ze na vsech asi 17 proxynach jsem musel cekat, ale pouze jednotky minut, takze jsem to resil tim sleepem.

    To vytvareni tunelu urcite neni slozity, nicmene ja potrebuju interaktivne tinyproxy nainstalovat a pak zase odinstalovat, takze ssh musim spoustet vzdycky, takze tunely mam v ~/.ssh/config a pak uz se jenom loguju ala cluster-ssh (osobne pouzivam vlastni skirptik sshmulti http://www.abclinuxu.cz/blog/RoboShim/2008/6/sshmulti-sshm), takze jednim prikazem pak tinyproxy nainstaluju na vsech proxynach najednou a stejne tak jednim prikazem odinstaluju. A stejne tak nemusim na spojeni pouzivat trap, protoze spojeni spravuju manuale sam.

    Ale mas to fakt hezky vychytany:-)

    6.1.2009 17:41 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: down-rapid
    Tenhle skript pro GreaseMonkey taky nevypadá špatně.
    6.1.2009 17:49 VSi | skóre: 28
    Rozbalit Rozbalit vše Re: down-rapid

    Místo tinyproxy je zajímavá možnost tohle:

    www.okisoft.co.jp/esc/python/proxy/

    stačí mít nainstalovyný Python, a spustit. Celé je to v jednom souboru. Implicitně poslouchá na portu 8000, povolené klienty a port jde nastavit jako parametr.

    6.1.2009 18:17 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid

    No, zkusil jsem to a vubec to nevypada spatne!! Diky. Je to urcite o hodne lepsi reseni, nez porad instalovat a odinstalovavat tinyproxy

    7.1.2009 03:56 Deleted [8409] | skóre: 14 | blog: darkblog
    Rozbalit Rozbalit vše Re: down-rapid
    Zajimavy skript. Ja osobne jsem zkusil program FreeRapid a nemuzu si stezovat. Mam pocit, ze umi i nastaveni tech proxy serveru.
    7.1.2009 10:32 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-rapid

    No, tak to vypada taky dobre:) V Jave napsany, takze bezi na Lin+Win. Ja jsem si napsal ten skriptik i pro ty dalsi stahovace. Vubec by nebylo spatny, kdyz tenhle freerapid umel i dalsi share-weby. Sice je blby, ze se neda spoustet vzdalene pres ssh (sice by to slo pres vnc, ale clovek uz proste potrebuje navic nejaky X prostredi). Ja jsem spis cmdline orientovanej:)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.