10 příkladů příkazů wget, které vám pomohou při odstraňování problémů – wget Test

Jedním z často používaných nástrojů sysadmin je wget. To může být velmi užitečné při řešení problémů souvisejících s webem.

Co je příkaz wget?

Příkaz wget je populární nástroj příkazového řádku Unix/Linux pro načítání obsahu z webu. Je zdarma k použití a poskytuje neinteraktivní způsob stahování souborů z webu. Příkaz wget podporuje protokoly HTTPS, HTTP a FTP ihned po vybalení. Navíc s ním můžete používat i HTTP proxy.

Jak vám wget pomůže při odstraňování problémů?

Existuje mnoho způsobů.

Jako správce systému budete většinu času pracovat na terminálu a při řešení problémů souvisejících s webovou aplikací možná nebudete chtít kontrolovat celou stránku, ale pouze konektivitu. Nebo chcete ověřit intranetové weby. Nebo si chcete 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. Může nastat mnoho případů, kdy je nezbytné, abyste se odpojili od systému, i když provádíte načítání souborů z webu. Na pozadí se wget spustí a dokončí přidělenou úlohu.

Lze jej také použít k získání celého webu na vaše místní počítače. Může následovat odkazy na stránkách XHTML a HTML a vytvořit místní verzi. K tomu musí stáhnout stránku rekurzivně. To je velmi užitečné, protože jej můžete použít ke stažení důležitých stránek nebo webů pro offline prohlížení.

Pojďme je vidět v akci. Syntaxe wget je uvedena níže.

wget [option] [URL]

Stáhněte si webovou stránku

Zkusme stáhnout stránku. Příklad: github.com

wget github.com

Pokud je připojení v pořádku, stáhne domovskou stránku a zobrazí výstup, jak je uvedeno níže.

[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]:~#

Stáhnout více souborů

Užitečné, když musíte stahovat více souborů najednou. To vám může poskytnout představu o automatizaci stahování souborů pomocí některých skriptů.

  Jak povolit nebo blokovat vyskakovací okna v prohlížeči Chrome

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

Takže, jak můžete hádat, syntaxe je následující.

wget URL1 URL2 URL3

Musíte pouze zajistit, aby mezi adresami URL byla mezera.

Omezte rychlost stahování

Bylo by užitečné, když chcete zkontrolovat, jak dlouho trvá stahování vašeho souboru při různé šířce pásma.

Pomocí možnosti –limit-rate můžete omezit rychlost stahování.

Zde je 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í 13,92 MB souborů trvalo 0,05 sekundy. Nyní zkusme 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]

Snížení šířky pásma trvalo déle – stahování 28 sekund. Představte si, že si vaši uživatelé stěžují na pomalé stahování a vy víte, že šířka pásma jejich sítě je nízká. Problém můžete rychle vyzkoušet –limit-rate.

  Jak automaticky přidat úkoly Microsoft Planner do kalendáře aplikace Outlook

Stáhnout na pozadí

Stahování velkých souborů může nějakou dobu trvat nebo výše uvedený příklad, kde chcete také nastavit limit rychlosti. To se očekává, ale co když nechcete zírat na svůj terminál?

Můžete použít argument -b ke spuštění wget na pozadí.

[email protected]:~# wget -b https://slack.com
Continuing in background, pid 25430.
Output will be written to ‘wget-log.1’.
[email protected]:~#

Ignorovat chybu certifikátu

To 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, když 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 je pro adresu URL, kde vypršela platnost certifikátu. Jak můžete vidět, navrhlo použití –no-check-certificate, které bude ignorovat 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 hlavičku HTTP odpovědi daného webu na terminálu.

Použití -S vytiskne záhlaví, 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]

Manipulujte s User-Agentem

Může nastat situace, kdy budete chtít připojit web pomocí vlastního uživatelského agenta. Nebo konkrétního uživatelského agenta prohlížeče. To lze provést zadáním –user-agent. Níže uvedený příklad je pro uživatelského agenta jako MyCustomUserAgent.

[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"

Když je aplikace stále ve vývoji, možná nemáte správnou adresu URL pro její testování. Nebo můžete chtít otestovat jednotlivou instanci HTTP pomocí IP, ale musíte zadat hlavičku hostitele, aby aplikace fungovala správně. V této situaci by bylo užitečné –header.

  Opravte kód chyby Xbox One 0X87E107DF

Vezměme si příklad testování http://10.10.10.1 s hlavičkou hostitele jako application.com

wget --header="Host: application.com" http://10.10.10.1

Nejen hostitele, ale můžete vložit libovolnou hlavičku, kterou chcete.

Připojte se pomocí proxy

Pokud pracujete v prostředí DMZ, možná nebudete mít přístup k internetovým stránkám. Pro připojení však můžete využít proxy.

wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com

Nezapomeňte aktualizovat proměnnou $PROXYHOST:PORT aktuálními.

Připojte se pomocí specifického protokolu TLS

Obvykle bych k testování protokolu TLS doporučil použít OpenSSL. Můžete však použít i wget.

wget –secure-protocol=TLSv1_2 https://example.com

Výše uvedené vynutí připojení wgetu přes TLS 1.2.

Závěr

Znalost potřebného příkazu vám může pomoci v práci. Doufám, že výše uvedené vám poskytne představu o tom, co můžete dělat s wget.