Jump to content

Wget (GNU Wget) - downloading files on the protocols http, https, ftp and ftps


Recommended Posts

 

Установка и настройка WGET

 

Wget (CNU Wget) - свободная неинтерактивная консольная программа для загрузки файлов по сети. Поддерживает протоколы: HTTP, HTTPS, FTP, FTPS.

Версия из репозитория Wget (1.19.5-2):

http://bin.entware.net/mipselsf-k3.4/wget_1.19.5-2_mipsel-3.4.ipk

Изменения - здесь.

Подготовка:

1. Создаем раздел EXT4 на жестком диске - Использование файловой системы EXT4 на USB-накопителях.

2. Установка и настройка Entware - в данной теме.

Обновляемся:

/ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keendev

Устанавливаем:

/ # opkg install wget
Installing wget (1.19.5-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/wget_1.19.5-2_mipsel-3.4.ipk
Installing zlib (1.2.11-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/zlib_1.2.11-2_mipsel-3.4.ipk
Installing libopenssl (1.0.2p-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libopenssl_1.0.2p-1_mipsel-3.4.ipk
Configuring zlib.
Configuring libopenssl.
Configuring wget.

Пример работы.

1. Записываем файл прошивки Keenetic OS для KN-1010 в нужный нам раздел:

/ # wget -P opt/home/ --no-check-certificate https://help.keenetic.com/hc/article_attachments/360000591459/KN-1010_stable_2.13.C.0.0-3.zip
--2018-11-13 11:33:36--  https://help.keenetic.com/hc/article_attachments/360000591459/KN-1010_stable_2.13.C.0.0-3.zip
Resolving help.keenetic.com... 104.16.55.111, 104.16.51.111, 104.16.52.111, ...
Connecting to help.keenetic.com|104.16.55.111|:443... connected.
WARNING: cannot verify help.keenetic.com's certificate, issued by 'CN=Let\'s Encrypt Authority X3,O=Let\'s Encrypt,C=US':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: 13821475 (13M) [application/zip]
Saving to: 'opt/home/KN-1010_stable_2.13.C.0.0-3.zip'

KN-1010_stable_2.13.C.0.0-3.zip                      100%[=====================================================================================================================>]  13.18M  4.54MB/s    in 2.9s    

2018-11-13 11:33:40 (4.54 MB/s) - 'opt/home/KN-1010_stable_2.13.C.0.0-3.zip' saved [13821475/13821475]

где:

ключ -P  --directory-prefix=PREFIX  save files to PREFIX/.. - здесь указываем нужную директорию для скачивания.

ключ --no-check-certificate - отключает проверку сертификата протокола HTTPS.

2. Пример копирования скаченного файла из одной директории в другую:

/ # cp opt/home/KN-1010_stable_2.13.C.0.0-3.zip tmp/mnt/MYFILES/KN-1010_stable_2.13.C.0.0-3.zip

где:

opt/home/ - откуда копируем файл; tmp/mnt/MYFILES/ - куда копируем файл.

3. Проверяем директорию, куда был записан файл:

/ # ls tmp/mnt/MYFILES/
Camera Uploads                                                  Keenetic 4G III_revB_2.13.C.0.0-3.txt                           Keenetic_Air_2.13.C.0.0-3.bin
IMAX.Dolphins.2000.2160p.Amazon.WEBRip.DD2.0.x264-TrollUHD.mkv  Keenetic 4G_KN-1210_2.13.C.0.0-3.bin                            components
KN-1010_stable_2.13.C.0.0-3.zip                                 Keenetic 4G_KN-1210_2.13.C.0.0-3.txt
Keenetic 4G III_revB_2.13.C.0.0-3.bin                           Keenetic Air_2.13.C.0.0-3.txt

Как видим, файл записан корректно, в нужную нам директорию.

Описание ключей:

/ # wget --help
GNU Wget 1.19.5, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...

Mandatory arguments to long options are mandatory for short options too.

Startup:
  -V,  --version                   display the version of Wget and exit
  -h,  --help                      print this help
  -b,  --background                go to background after startup
  -e,  --execute=COMMAND           execute a `.wgetrc'-style command

Logging and input file:
  -o,  --output-file=FILE          log messages to FILE
  -a,  --append-output=FILE        append messages to FILE
  -d,  --debug                     print lots of debugging information
  -q,  --quiet                     quiet (no output)
  -v,  --verbose                   be verbose (this is the default)
  -nv, --no-verbose                turn off verboseness, without being quiet
       --report-speed=TYPE         output bandwidth as TYPE.  TYPE can be bits
  -i,  --input-file=FILE           download URLs found in local or external FILE
  -F,  --force-html                treat input file as HTML
  -B,  --base=URL                  resolves HTML input-file links (-i -F)
                                     relative to URL
       --config=FILE               specify config file to use
       --no-config                 do not read any config file
       --rejected-log=FILE         log reasons for URL rejection to FILE

Download:
  -t,  --tries=NUMBER              set number of retries to NUMBER (0 unlimits)
       --retry-connrefused         retry even if connection is refused
       --retry-on-http-error=ERRORS    comma-separated list of HTTP errors to retry
  -O,  --output-document=FILE      write documents to FILE
  -nc, --no-clobber                skip downloads that would download to
                                     existing files (overwriting them)
       --no-netrc                  don't try to obtain credentials from .netrc
  -c,  --continue                  resume getting a partially-downloaded file
       --start-pos=OFFSET          start downloading from zero-based position OFFSET
       --progress=TYPE             select progress gauge type
       --show-progress             display the progress bar in any verbosity mode
  -N,  --timestamping              don't re-retrieve files unless newer than
                                     local
       --no-if-modified-since      don't use conditional if-modified-since get
                                     requests in timestamping mode
       --no-use-server-timestamps  don't set the local file's timestamp by
                                     the one on the server
  -S,  --server-response           print server response
       --spider                    don't download anything
  -T,  --timeout=SECONDS           set all timeout values to SECONDS
       --dns-timeout=SECS          set the DNS lookup timeout to SECS
       --connect-timeout=SECS      set the connect timeout to SECS
       --read-timeout=SECS         set the read timeout to SECS
  -w,  --wait=SECONDS              wait SECONDS between retrievals
       --waitretry=SECONDS         wait 1..SECONDS between retries of a retrieval
       --random-wait               wait from 0.5*WAIT...1.5*WAIT secs between retrievals
       --no-proxy                  explicitly turn off proxy
  -Q,  --quota=NUMBER              set retrieval quota to NUMBER
       --bind-address=ADDRESS      bind to ADDRESS (hostname or IP) on local host
       --limit-rate=RATE           limit download rate to RATE
       --no-dns-cache              disable caching DNS lookups
       --restrict-file-names=OS    restrict chars in file names to ones OS allows
       --ignore-case               ignore case when matching files/directories
  -4,  --inet4-only                connect only to IPv4 addresses
  -6,  --inet6-only                connect only to IPv6 addresses
       --prefer-family=FAMILY      connect first to addresses of specified family,
                                     one of IPv6, IPv4, or none
       --user=USER                 set both ftp and http user to USER
       --password=PASS             set both ftp and http password to PASS
       --ask-password              prompt for passwords
       --use-askpass=COMMAND       specify credential handler for requesting 
                                     username and password.  If no COMMAND is 
                                     specified the WGET_ASKPASS or the SSH_ASKPASS 
                                     environment variable is used.
       --no-iri                    turn off IRI support
       --local-encoding=ENC        use ENC as the local encoding for IRIs
       --remote-encoding=ENC       use ENC as the default remote encoding
       --unlink                    remove file before clobber
       --no-xattr                  turn off storage of metadata in extended file attributes

Directories:
  -nd, --no-directories            don't create directories
  -x,  --force-directories         force creation of directories
  -nH, --no-host-directories       don't create host directories
       --protocol-directories      use protocol name in directories
  -P,  --directory-prefix=PREFIX   save files to PREFIX/..
       --cut-dirs=NUMBER           ignore NUMBER remote directory components

HTTP options:
       --http-user=USER            set http user to USER
       --http-password=PASS        set http password to PASS
       --no-cache                  disallow server-cached data
       --default-page=NAME         change the default page name (normally
                                     this is 'index.html'.)
  -E,  --adjust-extension          save HTML/CSS documents with proper extensions
       --ignore-length             ignore 'Content-Length' header field
       --header=STRING             insert STRING among the headers
       --compression=TYPE          choose compression, one of auto, gzip and none. (default: none)
       --max-redirect              maximum redirections allowed per page
       --proxy-user=USER           set USER as proxy username
       --proxy-password=PASS       set PASS as proxy password
       --referer=URL               include 'Referer: URL' header in HTTP request
       --save-headers              save the HTTP headers to file
  -U,  --user-agent=AGENT          identify as AGENT instead of Wget/VERSION
       --no-http-keep-alive        disable HTTP keep-alive (persistent connections)
       --no-cookies                don't use cookies
       --load-cookies=FILE         load cookies from FILE before session
       --save-cookies=FILE         save cookies to FILE after session
       --keep-session-cookies      load and save session (non-permanent) cookies
       --post-data=STRING          use the POST method; send STRING as the data
       --post-file=FILE            use the POST method; send contents of FILE
       --method=HTTPMethod         use method "HTTPMethod" in the request
       --body-data=STRING          send STRING as data. --method MUST be set
       --body-file=FILE            send contents of FILE. --method MUST be set
       --content-disposition       honor the Content-Disposition header when
                                     choosing local file names (EXPERIMENTAL)
       --content-on-error          output the received content on server errors
       --auth-no-challenge         send Basic HTTP authentication information
                                     without first waiting for the server's
                                     challenge

HTTPS (SSL/TLS) options:
       --secure-protocol=PR        choose secure protocol, one of auto, SSLv2,
                                     SSLv3, TLSv1, TLSv1_1, TLSv1_2 and PFS
       --https-only                only follow secure HTTPS links
       --no-check-certificate      don't validate the server's certificate
       --certificate=FILE          client certificate file
       --certificate-type=TYPE     client certificate type, PEM or DER
       --private-key=FILE          private key file
       --private-key-type=TYPE     private key type, PEM or DER
       --ca-certificate=FILE       file with the bundle of CAs
       --ca-directory=DIR          directory where hash list of CAs is stored
       --crl-file=FILE             file with bundle of CRLs
       --pinnedpubkey=FILE/HASHES  Public key (PEM/DER) file, or any number
                                   of base64 encoded sha256 hashes preceded by
                                   'sha256//' and separated by ';', to verify
                                   peer against
       --random-file=FILE          file with random data for seeding the SSL PRNG
       --egd-file=FILE             file naming the EGD socket with random data

       --ciphers=STR           Set the priority string (GnuTLS) or cipher list string (OpenSSL) directly.
                                   Use with care. This option overrides --secure-protocol.
                                   The format and syntax of this string depend on the specific SSL/TLS engine.
HSTS options:
       --no-hsts                   disable HSTS
       --hsts-file                 path of HSTS database (will override default)

FTP options:
       --ftp-user=USER             set ftp user to USER
       --ftp-password=PASS         set ftp password to PASS
       --no-remove-listing         don't remove '.listing' files
       --no-glob                   turn off FTP file name globbing
       --no-passive-ftp            disable the "passive" transfer mode
       --preserve-permissions      preserve remote file permissions
       --retr-symlinks             when recursing, get linked-to files (not dir)

FTPS options:
       --ftps-implicit                 use implicit FTPS (default port is 990)
       --ftps-resume-ssl               resume the SSL/TLS session started in the control connection when
                                         opening a data connection
       --ftps-clear-data-connection    cipher the control channel only; all the data will be in plaintext
       --ftps-fallback-to-ftp          fall back to FTP if FTPS is not supported in the target server
WARC options:
       --warc-file=FILENAME        save request/response data to a .warc.gz file
       --warc-header=STRING        insert STRING into the warcinfo record
       --warc-max-size=NUMBER      set maximum size of WARC files to NUMBER
       --warc-cdx                  write CDX index files
       --warc-dedup=FILENAME       do not store records listed in this CDX file
       --no-warc-compression       do not compress WARC files with GZIP
       --no-warc-digests           do not calculate SHA1 digests
       --no-warc-keep-log          do not store the log file in a WARC record
       --warc-tempdir=DIRECTORY    location for temporary files created by the
                                     WARC writer

Recursive download:
  -r,  --recursive                 specify recursive download
  -l,  --level=NUMBER              maximum recursion depth (inf or 0 for infinite)
       --delete-after              delete files locally after downloading them
  -k,  --convert-links             make links in downloaded HTML or CSS point to
                                     local files
       --convert-file-only         convert the file part of the URLs only (usually known as the basename)
       --backups=N                 before writing file X, rotate up to N backup files
  -K,  --backup-converted          before converting file X, back up as X.orig
  -m,  --mirror                    shortcut for -N -r -l inf --no-remove-listing
  -p,  --page-requisites           get all images, etc. needed to display HTML page
       --strict-comments           turn on strict (SGML) handling of HTML comments

Recursive accept/reject:
  -A,  --accept=LIST               comma-separated list of accepted extensions
  -R,  --reject=LIST               comma-separated list of rejected extensions
       --accept-regex=REGEX        regex matching accepted URLs
       --reject-regex=REGEX        regex matching rejected URLs
       --regex-type=TYPE           regex type (posix|pcre)
  -D,  --domains=LIST              comma-separated list of accepted domains
       --exclude-domains=LIST      comma-separated list of rejected domains
       --follow-ftp                follow FTP links from HTML documents
       --follow-tags=LIST          comma-separated list of followed HTML tags
       --ignore-tags=LIST          comma-separated list of ignored HTML tags
  -H,  --span-hosts                go to foreign hosts when recursive
  -L,  --relative                  follow relative links only
  -I,  --include-directories=LIST  list of allowed directories
       --trust-server-names        use the name specified by the redirection
                                     URL's last component
  -X,  --exclude-directories=LIST  list of excluded directories
  -np, --no-parent                 don't ascend to the parent directory

Email bug reports, questions, discussions to <bug-wget@gnu.org>
and/or open issues at https://savannah.gnu.org/bugs/?func=additem&group=wget.

Если возникли проблемы при работе wget:

Читаем посты от TheBB и zyxmon

Дополнительный материл:

КОМАНДА WGET LINUX
Wget Wiki
КОПИРОВАНИЕ ФАЙЛОВ В LINUX
КОМАНДА LS LINUX

  • Upvote 1
Link to comment
Share on other sites

Небольшое, но очень важное дополнение.

Ставить wget отдельным пакетом НЕ РЕКОМЕНДУЕТСЯ!

Дело в том, что

(1) wget зависит от libopenssl;

(2) opkg вызывает wget для установки пакетов.

 

Ситуация (скорее всего скоро так и будет) - при обновлении пакетов обновится libopenssl на версию, не совместимую с wget. wget перестает работать, пакеты ни установить, ни  откатить.... Цугцванг короче.

Как из этой ситуации выходить - известно. Если у кого возникнет - напишем. Но лучше не устанавливать wget. Используйте curl.

 

PS Описанная выше ситуация уже была.....

  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...
29 минут назад, qoob world сказал:

Подскажите пожалуйста, как вернуть все обратно?)

`ln -s /opt/bin/busybox /opt/bin/wget`

Скрытый текст

BusyBox v1.29.2 () built-in shell (ash)

~ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keendev

~ # rm /opt/bin/wget 

~ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
*** Failed to download the package list from http://bin.entware.net/mipselsf-k3.4/Packages.gz

Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
*** Failed to download the package list from http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz

Collected errors:
 * opkg_download: Failed to download http://bin.entware.net/mipselsf-k3.4/Packages.gz, wget returned 255.
 * opkg_download: Failed to download http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz, wget returned 255.

~ # ln -s /opt/bin/busybox /opt/bin/wget

~ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keendev
~ #

 

 

  • Thanks 2
  • Upvote 1
Link to comment
Share on other sites

19 минут назад, TheBB сказал:

`ln -s /opt/bin/busybox /opt/bin/wget`

Чуть лучше сделать ` /opt/lib/opkg/info/busybox.postinst` - это восстановит не только wget, но, возможно, и другие апплеты.

  • Thanks 1
  • Upvote 2
Link to comment
Share on other sites

  • 3 months later...
В 21.11.2018 в 19:09, zyxmon сказал:

PS Описанная выше ситуация уже была....

Сегодня при обновлении и я столкнулся с этой проблемой. Благодаря помощи разработчиков на канале Entware проблему удалось устранить.

Притом, сломалось у меня все достаточно сильно. И да, у меня был установлен пакет wget, притом особой необходимости в нем у меня не было, я просто не знал, что его наличие может вызвать проблемы при обновлении.

Решением в моем случае была полная переустановка Entware поверх существующей по основной инструкции. То есть скачал установочный пакет, скопировал его в папку install на USB накопителе для Entware. Затем в WEBUI Кинетика на странице OPKG в разделе Накопитель сначала выбрал пункт Не выбран. Сохранил настройки. Затем выбрал уже свой USB накопитель для Entware, после этого запустилась установка.

У моей конкретной ситуации установка слегка усложнилась тем, что единственным DNS резолвером у меня был dnscrypt-proxy2 из того же Entware, поэтому 2 попытки установки Entware завершились ошибкой невозможности разрешения DNS адреса в IP адрес. Но когда dnscrypt-proxy2 поднялся, установка продолжилась успешно.

Правда сразу после того как завершилась установка Entware я не мог подключиться по SSH ни по стандартному после установки порту 222 ни по своему ранее настроенному. Но после перезагрузки роутера успешно подключится по "своему" порту.

Далее уже opkg update && opkg upgrade прошли без проблем - все мои установленные пакеты обновились до актуальных версий и работают нормально.

Надеюсь, этот пост поможет тем, кто так же как и я столкнется с подобной проблемой.

PS Может быть есть смысл владельцам Кинетика при установке wget написать какой-то дисклеймер о возможных проблемах при обновлениях.

 

Link to comment
Share on other sites

В 24.03.2019 в 17:55, ankar84 сказал:

PS Может быть есть смысл владельцам Кинетика при установке wget написать какой-то дисклеймер о возможных проблемах при обновлениях.

В 21.11.2018 в 16:09, zyxmon сказал:

Ставить wget отдельным пакетом НЕ РЕКОМЕНДУЕТСЯ!

 

Уж, простите, куда дисклеймерово то???

Link to comment
Share on other sites

13 минуты назад, Mamay сказал:

Уж, простите, куда дисклеймерово то???

Скажу честно, я эту тему до того как столкнулся с проблемой вообще не видел. А wget в Entware установил, похоже, уже очень давно.

И дисклеймер имел ввиду как раз в момент установки, мол

opkg install wget
It is not recommended to install wget pakage on Keenetic router due to possible incompatibilities. Do you want to continue? (y/n)

Хотя, скорее всего реализовать такое не получится и предупреждать можно только тут, на форуме.

Link to comment
Share on other sites

  • 3 years later...

Не подскажите почему при использовании

--no-check-certificate

выходит ошибка wget: unrecognized option '--no-check-certificate'  

команду ввожу так 

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

В putty под root в среде OPKG  . 

Link to comment
Share on other sites

6 минут назад, EvgenyAly сказал:

Не подскажите почему при использовании

--no-check-certificate

выходит ошибка wget: unrecognized option '--no-check-certificate'  

команду ввожу так 

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

В putty под root в среде OPKG  . 

To support encrypted HTTP (HTTPS) downloads, Wget must be compiled with an external SSL library. ... If Wget is compiled without SSL support, none of these options are available.
 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...