1 (edytowany przez aksnet 2017-01-28 07:07:15)

Temat: Skrypt bash - download plików w tle (wget) openwrt

Witam wszystkich

Spędziłem trochę godzin nad tematem ściągania plików programem wget w tle.
Napisałem skrypt i wszystko ładnie działa, dlatego chciałem się podzielić z innymi.
Jest przydatny zwłaszcza kiedy ściągamy coś  z wolnych serwerów
(ściąganie trwa wiele godzin i np. zamiast zostawiać włączony komputer
chcemy uruchomić ściąganie na ruterze gdzie mamy wpięty pendrive lub dysk)

Całość składa się z pliku wget.txt (do którego dopisujemy linki)  oraz
skryptu bash download.sh (zajmującego się automatycznym ściąganiem)

1.
Plik  old_wget.txt tworzymy w folderze download (tym do którego zamierzamy ściągać)
Do pliku  old_wget.txt  linia pod linią zapisujemy linki do ściągnięcia (obsługiwane protokoły: https, http lub ftp)
Po zapisaniu wszystkich linków zmieniamy nazwę pliku old_wget.txt na wget.txt
(jest to informacja dla skryptu, że może rozpocząć ściąganie).
Skrypt po rozpoczęciu ściągania  zmieni nam nazwę z  wget.txt  na old_wget.txt
Wszystkie pliki będą ściągane jednocześnie  w tle.


2. Skrypt download.sh

Skrypt działa nieprzerwanie w tle i co 10 sekund sprawdza
czy nie zostały dodane nowe linki (czy istnieje plik wget.txt).


w zmiennej  DIR='/tmp/usb_mount/dev_sda2/download'

zapisujemy folder do którego zamierzamy ściągać pliki
(u mnie to folder: /tmp/usb_mount/dev_sda2/download)


#!/bin/sh

# uwaga:
# ruchomic: 
#
#  dopisujemy do /etc/rc.local:
# /etc/download.sh 2>/dev/null &


URLFILE='wget.txt'
DIR='/tmp/usb_mount/dev_sda2/download'


#echo $URLFILE
#echo $DIR


while [ true ]
do

    # sprawdzamy czy plik istnieje
    if [ ! -e $DIR/$URLFILE  ] 
    then
      #echo "nie istnieje: $DIR/$URLFILE"
      sleep 10
      continue
    fi
    

    #zamieniamy znaki '\r' na spacje (BARDZO WAZNE)
    URLTABLE=$(tr '\r' ' ' <$DIR/$URLFILE) 
    
    # odczytujemy linki jeden po drugim
    for URL in $URLTABLE
    do
      wget -cq $URL -P $DIR &        
    done
    
     
    # zmieniamy nazwe pliku na "old"
    mv $DIR/$URLFILE $DIR/old_$URLFILE  
   
done 

3. Instalacja skryptu download.sh

Skrypt kopiujemy do /etc
Następnie w pliku /etc/rc.local  dopisujemy linię:   /etc/download.sh 2>/dev/null &

nasz /etc/rc.local  powinien wyglądać tak:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

/etc/download.sh 2>/dev/null &

exit 0

4. restartujemy ruter i używamy

2

Odp: Skrypt bash - download plików w tle (wget) openwrt

PS.

Jeśli będzie zainteresowanie tematem to pomyślę nad napisaniem pluginu.

3

Odp: Skrypt bash - download plików w tle (wget) openwrt

Tak z ciekawości: czemu nie użyłeś arii do tego? Nawet przyjemne webgui możesz do niej dołożyć.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4 (edytowany przez aksnet 2017-01-28 08:17:06)

Odp: Skrypt bash - download plików w tle (wget) openwrt

Bo to moje pierwsze dzieło pod openwrt i nie jestem obeznany z tematem.
Widzę, że aria2 rzeczywiście ma ciekawe możliwości.

5

Odp: Skrypt bash - download plików w tle (wget) openwrt

Takie jak wieloźródłowe pobieranie, torrenty, masę parametów do ustawienia po swojemu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez aksnet 2017-01-28 08:24:16)

Odp: Skrypt bash - download plików w tle (wget) openwrt

A jak aria2 wypada w porównaniu z transmission? (jakość, stabilność)

7

Odp: Skrypt bash - download plików w tle (wget) openwrt

Nie wiem.  Dawno porzuciłem transmission na rzecz arii, więc nie mam porównania.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8 (edytowany przez aksnet 2017-01-28 08:58:48)

Odp: Skrypt bash - download plików w tle (wget) openwrt

Właśnie szukałem czegoś takiego jak aria, ale nie znalazłem i stąd mój skrypt.
Cała nocka zmarnowana, ale jestem bogatszy o trochę wiedzy smile

Wywalam transmission i testuję arię.

9

Odp: Skrypt bash - download plików w tle (wget) openwrt

A jaka jest obecna dostępna wersja arii? Moja obecna 1.8.17 nie ma możliwości torrentów.

10

Odp: Skrypt bash - download plików w tle (wget) openwrt

scalpel napisał/a:

A jaka jest obecna dostępna wersja arii? Moja obecna 1.8.17 nie ma możliwości torrentów.

Bo to co jest w CC nie miało włączonej opcji torrentów podczas kompilacji. Deweloperzy dali ciała.

1.31.1: https://aria2.github.io/

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez aksnet 2017-01-29 14:50:30)

Odp: Skrypt bash - download plików w tle (wget) openwrt

u mnie poza torrentami nie działa też ściąganie po https

działa po http i ftp

12

Odp: Skrypt bash - download plików w tle (wget) openwrt

Znów - brak odpowiednich opcji w kompilacji. Bo sama aria2 ma https

$ aria2c "https://dl.eko.one.pl/gargoyle-pl/chaos_calmer/ar71xx/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin"

01/29 14:50:00 [NOTICE] Downloading 1 item(s)
[#a74da8 13MiB/15MiB(88%) CN:1 DL:1.4MiB ETA:1s]                                                                                                                                                     
01/29 14:50:12 [NOTICE] Download complete: /home/cezary/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
a74da8|OK  |   1.5MiB/s|/home/cezary/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin

Status Legend:
(OK):download completed.
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13 (edytowany przez aksnet 2017-01-30 03:38:33)

Odp: Skrypt bash - download plików w tle (wget) openwrt

U mnie https poszedł po dodaniu w /etc/aria2.conf
opcji: 
check-certificate=false

może warto byłoby o tym wspomnieć w https://eko.one.pl/?p=openwrt-aria2  ?

(zmiana w configu ważna dla użytkowników: Webui-aria2 i YAAW)


PS.
w konsoli bez dodania --check-certificate=false https też nie idzie

14

Odp: Skrypt bash - download plików w tle (wget) openwrt

Czy to znaczy że chciałeś pobierać w witryny która ma nieprawidłowy lub taki co już wygasł certyfikat?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez aksnet 2017-01-30 06:51:16)

Odp: Skrypt bash - download plików w tle (wget) openwrt

u mnie to:  https://dl.eko.one.pl/gargoyle-pl/chaos … actory.bin

nie poszło (tak jak u Ciebie) bez   --check-certificate=fals

( nie sprawdzałem certyfikatów smile

16

Odp: Skrypt bash - download plików w tle (wget) openwrt

Pokaż wynik aria2c -v

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17 (edytowany przez aksnet 2017-01-30 07:33:22)

Odp: Skrypt bash - download plików w tle (wget) openwrt

aria zainstalowana wczoraj
    # opkg update
    # opkg install aria2

Copyright (C) 2006, 2014 Tatsuhiro Tsujikawa

(...)

** Configuration **
Enabled Features: GZip, HTTPS, Message Digest
Hash Algorithms: sha-1, sha-224, sha-256, sha-384, sha-512, md5
Libraries: zlib/1.2.8 OpenSSL/1.0.2d
Compiler: gcc 4.8.3
  built by   x86_64-pc-linux-gnu
  targetting mips-openwrt-linux-gnu
  on         Jan 31 2016 12:40:32
System: Linux 3.18.29 #5 Thu Jul 7 18:08:30 EDT 2016 mips

(...)

18

Odp: Skrypt bash - download plików w tle (wget) openwrt

Co wyświetla podczas próby pobrania https? Nie mam pojęcia czemu sprawa problem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: Skrypt bash - download plików w tle (wget) openwrt

root@Gargoyle:~# aria2c "https://dl.eko.one.pl/gargoyle-pl/chaos_calmer/ar71xx/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin"
[#013eab 0B/0B CN:1 DL:0B]
01/30 07:39:59 [ERROR] CUID#6 - Download aborted. URI=https://dl.eko.one.pl/gargoyle-pl/chaos_calmer/ar71xx/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin
Exception: [AbstractCommand.cc:350] errorCode=1 URI=https://dl.eko.one.pl/gargoyle-pl/chaos_calmer/ar71xx/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin
  -> [SocketCore.cc:875] errorCode=1 SSL/TLS handshake failure: unable to get local issuer certificate

01/30 07:39:59 [NOTICE] Download GID#013eabaa0e643849 not complete:

Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
013eab|ERR |       0B/s|https://dl.eko.one.pl/gargoyle-pl/chaos_calmer/ar71xx/gargoyle-1.9.1.2-ar71xx-archer-c5-v1-squashfs-factory.bin

Status Legend:
(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.

20

Odp: Skrypt bash - download plików w tle (wget) openwrt

Zainstaluj sobie pakiet ca-certificates

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21

Odp: Skrypt bash - download plików w tle (wget) openwrt

Po zainstalowaniu poszło.
Dzięki smile

22

Odp: Skrypt bash - download plików w tle (wget) openwrt

Miałeś problem z "konfiguracją systemu". Aria korzysta z bibliotek systemowych;  żeby sprawdzał poprawność certyfikatów to musi znać te CA i wiedzieć co z czym sprawdzać. Bez zainstalowanego w/w pakietu (w systemie) żaden proces nie był w stanie tego zrobić (wget pewnie też nie), bo nie wiedział którym ufać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

23 (edytowany przez aksnet 2017-01-30 08:45:16)

Odp: Skrypt bash - download plików w tle (wget) openwrt

W sumie aria2 powinna instalować ca-certificates jako pakiet od którego jest zależna i byłoby po problemie

24

Odp: Skrypt bash - download plików w tle (wget) openwrt

Znalazłem arię w nowej wersji tutaj:

https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/packages/aria2_1.30.0-1_ar71xx.ipk

Jednak nie daje się uruchomić:

root@Mietek:/tmp# ./aria2_1.30.0-1_ar71xx -h
./aria2_1.30.0-1_ar71xx: line 1: ./debian-binary0000644000000000000000000000000413037134560012334: not found
./aria2_1.30.0-1_ar71xx: line 1: syntax error: unexpected "(" (expecting ")")

Trzeba kompilować dla CC? Nie odpali nowsza binarka?

25

Odp: Skrypt bash - download plików w tle (wget) openwrt

Nie, trunk ma inną bibliotekę systemową. Poczekaj to skompiluję dla CC.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.