10 příkladů příkazů wget, které vám pomohou při odstraňování problémů – wget Test
Mezi nástroje, které administrátoři systému často využívají, patří i wget. Může se stát velmi cenným pomocníkem při řešení problémů souvisejících s webem.
Co je to příkaz wget?
Příkaz wget je oblíbený nástroj pro příkazový řádek v systémech Unix/Linux, který slouží k načítání obsahu z webových stránek. Je k dispozici zdarma a nabízí neinteraktivní způsob stahování souborů z webu. Přímo po instalaci podporuje protokoly HTTPS, HTTP a FTP. Umožňuje také používání HTTP proxy serverů.
Jak může wget pomoci při řešení problémů?
Existuje mnoho situací, kdy je wget užitečný.
Jako správce systému budete často pracovat v terminálu. Při řešení problémů s webovými aplikacemi možná nebudete chtít kontrolovat celou stránku, ale pouze ověřit konektivitu. Nebo budete potřebovat zkontrolovat intranetové webové stránky. Nebo si budete chtít stáhnout určitou stránku a ověřit její obsah.
Wget je neinteraktivní, což znamená, že jej můžete spustit na pozadí, i když jste odhlášeni. Mnoho situací vyžaduje, abyste se od systému odpojili, i když právě probíhá stahování souborů z webu. Wget v takovém případě poběží na pozadí a dokončí zadanou úlohu.
Wget lze také použít ke stažení celých webových stránek na váš lokální počítač. Umí sledovat odkazy na stránkách XHTML a HTML a vytvářet lokální kopie webu. K tomu stahuje stránky rekurzivně. To se hodí zejména v případech, kdy chcete stáhnout důležité stránky nebo celé weby pro offline prohlížení.
Pojďme si ukázat několik praktických příkladů. Níže je uvedena základní syntaxe příkazu wget.
wget [volby] [URL]
Stahování webové stránky
Zkusme si stáhnout nějakou stránku. Například github.com
wget github.com
Pokud je připojení v pořádku, stáhne se domovská stránka a zobrazí se výstup podobný následujícímu:
[email protected]:~# wget github.com URL transformed to HTTPS due to an HSTS policy --2020-02-23 10:45:52-- https://github.com/ Resolving github.com (github.com)... 140.82.118.3 Connecting to github.com (github.com)|140.82.118.3|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘index.html’ index.html [ <=> ] 131.96K --.-KB/s in 0.04s 2020-02-23 10:45:52 (2.89 MB/s) - ‘index.html’ saved [135126] [email protected]:~#
Stahování více souborů
Tato funkce je užitečná, když potřebujete stáhnout více souborů najednou. Může vám také ukázat, jak automatizovat stahování souborů pomocí skriptů.
Zkusme stáhnout soubory Python 3.8.1 a 3.5.1.
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Jak už asi tušíte, syntaxe je následující:
wget URL1 URL2 URL3
Stačí, aby byly adresy URL odděleny mezerou.
Omezení rychlosti stahování
Tato funkce se hodí, když chcete otestovat, jak dlouho trvá stahování vašeho souboru při různých rychlostech připojení.
Rychlost stahování můžete omezit pomocí volby --limit-rate.
Níže je uveden výstup stahování souboru Nodejs:
[email protected]:~# wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz --2020-02-23 10:59:58-- https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ... Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 14591852 (14M) [application/x-xz] Saving to: ‘node-v12.16.1-linux-x64.tar.xz’ node-v12.16.1-linux-x64.tar.xz 100%[===========================================================================================>] 13.92M --.-KB/s in 0.05s 2020-02-23 10:59:58 (272 MB/s) - ‘node-v12.16.1-linux-x64.tar.xz’ saved [14591852/14591852]
Stažení souboru o velikosti 13,92 MB trvalo 0,05 sekundy. Nyní zkusíme omezit rychlost na 500K.
[email protected]:~# wget --limit-rate=500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz --2020-02-23 11:00:18-- https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ... Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 14591852 (14M) [application/x-xz] Saving to: ‘node-v12.16.1-linux-x64.tar.xz.1’ node-v12.16.1-linux-x64.tar.xz.1 100%[===========================================================================================>] 13.92M 501KB/s in 28s 2020-02-23 11:00:46 (500 KB/s) - ‘node-v12.16.1-linux-x64.tar.xz.1’ saved [14591852/14591852]
Omezení rychlosti stahování způsobilo, že stahování trvalo déle – 28 sekund. Představte si, že si vaši uživatelé stěžují na pomalé stahování a vy víte, že jejich síť má nízkou šířku pásma. Problém můžete rychle otestovat pomocí volby --limit-rate.
Stahování na pozadí
Stahování velkých souborů může trvat delší dobu, nebo můžete chtít nastavit omezení rychlosti. To se dá očekávat, ale co když nechcete sledovat terminál?
Pro spuštění wget na pozadí můžete použít argument -b.
[email protected]:~# wget -b https://slack.com Continuing in background, pid 25430. Output will be written to ‘wget-log.1’. [email protected]:~#
Ignorování chyb certifikátu
Tato funkce je užitečná, když potřebujete zkontrolovat intranetové webové aplikace, které nemají správný certifikát. Ve výchozím nastavení wget vyvolá chybu, pokud certifikát není platný.
[email protected]:~# wget https://expired.badssl.com/ --2020-02-23 11:24:59-- https://expired.badssl.com/ Resolving expired.badssl.com (expired.badssl.com)... 104.154.89.105 Connecting to expired.badssl.com (expired.badssl.com)|104.154.89.105|:443... connected. ERROR: cannot verify expired.badssl.com's certificate, issued by ‘CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB’: Issued certificate has expired. To connect to expired.badssl.com insecurely, use `--no-check-certificate'.
Výše uvedený příklad se týká adresy URL, u které vypršela platnost certifikátu. Jak můžete vidět, je zde navrženo použití --no-check-certificate, které ignoruje jakékoli ověření certifikátu.
[email protected]:~# wget https://untrusted-root.badssl.com/ --no-check-certificate --2020-02-23 11:33:45-- https://untrusted-root.badssl.com/ Resolving untrusted-root.badssl.com (untrusted-root.badssl.com)... 104.154.89.105 Connecting to untrusted-root.badssl.com (untrusted-root.badssl.com)|104.154.89.105|:443... connected. WARNING: cannot verify untrusted-root.badssl.com's certificate, issued by ‘CN=BadSSL Untrusted Root Certificate Authority,O=BadSSL,L=San Francisco,ST=California,C=US’: Self-signed certificate encountered. HTTP request sent, awaiting response... 200 OK Length: 600 [text/html] Saving to: ‘index.html.6’ index.html.6 100%[===========================================================================================>] 600 --.-KB/s in 0s 2020-02-23 11:33:45 (122 MB/s) - ‘index.html.6’ saved [600/600] [email protected]:~#
Skvělé, že?
Podívejte se na HTTP hlavičku odpovědi daného webu v terminálu.
Použití -S zobrazí hlavičky, jak můžete vidět níže pro Coursera.
[email protected]:~# wget https://www.coursera.org -S --2020-02-23 11:47:01-- https://www.coursera.org/ Resolving www.coursera.org (www.coursera.org)... 13.224.241.48, 13.224.241.124, 13.224.241.82, ... Connecting to www.coursera.org (www.coursera.org)|13.224.241.48|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Type: text/html Content-Length: 511551 Connection: keep-alive Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0 Date: Sun, 23 Feb 2020 11:47:01 GMT etag: W/"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o" Server: envoy Set-Cookie: CSRF3-Token=1583322421.s1b4QL6OXSUGHnRI; Max-Age=864000; Expires=Wed, 04 Mar 2020 11:47:02 GMT; Path=/; Domain=.coursera.org Set-Cookie: __204u=9205355775-1582458421174; Max-Age=31536000; Expires=Mon, 22 Feb 2021 11:47:02 GMT; Path=/; Domain=.coursera.org Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff x-coursera-render-mode: html x-coursera-render-version: v2 X-Coursera-Request-Id: NCnPPlYyEeqfcxIHPk5Gqw X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8 x-envoy-upstream-service-time: 1090 X-Frame-Options: SAMEORIGIN x-powered-by: Express X-XSS-Protection: 1; mode=block X-Cache: Miss from cloudfront Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront) X-Amz-Cf-Pop: LHR62-C3 X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ== Length: 511551 (500K) [text/html]
Manipulace s User-Agentem
Někdy budete potřebovat připojit se k webu pomocí vlastního User-Agenta nebo konkrétního User-Agenta prohlížeče. Toho lze dosáhnout zadáním --user-agent. Níže uvedený příklad používá User-Agenta "MyCustomUserAgent".
[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"
Pokud je vaše aplikace stále ve vývoji, možná nemáte správnou adresu URL pro testování. Nebo budete chtít otestovat jednotlivou instanci HTTP pomocí IP adresy, ale budete muset zadat hlavičku Host, aby aplikace fungovala správně. V této situaci se hodí parametr --header.
Uveďme příklad testování http://10.10.10.1 s hlavičkou Host nastavenou na application.com.
wget --header="Host: application.com" http://10.10.10.1
Můžete vkládat nejen hlavičku Host, ale libovolnou hlavičku, kterou si přejete.
Připojení pomocí proxy serveru
Pokud pracujete v prostředí DMZ, možná nebudete mít přímý přístup k internetovým stránkám. Pro připojení ale můžete použít proxy server.
wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com
Nezapomeňte nahradit proměnnou $PROXYHOST:PORT vašimi aktuálními údaji.
Připojení pomocí specifického protokolu TLS
Obvykle bych pro testování protokolu TLS doporučil použít OpenSSL. Nicméně můžete použít i wget.
wget --secure-protocol=TLSv1_2 https://example.com
Výše uvedený příkaz vynutí připojení wgetu přes TLS 1.2.
Závěr
Znalost užitečných příkazů vám může usnadnit práci. Doufám, že vám výše uvedené informace pomohou pochopit, co všechno se dá s příkazem wget dělat.