10 exempel på wget-kommando som hjälper dig att felsöka wget-testet

Ett av de ofta använda verktygen av sysadmin är wget. Det kan vara väldigt praktiskt vid webbrelaterad felsökning.

Vad är wget kommando?

wget kommando är ett populärt Unix/Linux kommandoradsverktyg för att hämta innehållet från webben. Det är gratis att använda och ger ett icke-interaktivt sätt att ladda ner filer från webben. Kommandot wget stöder HTTPS-, HTTP- och FTP-protokoll direkt. Dessutom kan du också använda HTTP-proxyer med den.

Hur hjälper wget dig att felsöka?

Det finns många sätt.

Som systemadministratör kommer du för det mesta att arbeta på en terminal, och när du felsöker problem med webbapplikationer kanske du inte vill kontrollera hela sidan utan bara anslutningen. Eller så vill du verifiera intranätwebbplatser. Eller så vill du ladda ner en viss sida för att verifiera innehållet.

wget är icke-interaktivt, vilket innebär att du kan köra det i bakgrunden även när du är utloggad. Det kan finnas många tillfällen där det är viktigt för dig att koppla från systemet även när du gör filhämtning från webben. I bakgrunden kommer wgeten att köras och avsluta sitt tilldelade jobb.

Det kan också användas för att få hela webbplatsen på dina lokala maskiner. Den kan följa länkar i XHTML- och HTML-sidor för att skapa en lokal version. För att göra det måste den ladda ner sidan rekursivt. Detta är mycket användbart eftersom du kan använda det för att ladda ner viktiga sidor eller webbplatser för offlinevisning.

Låt oss se dem i aktion. Syntaxen för wget är enligt nedan.

wget [option] [URL]

Ladda ner en webbsida

Låt oss försöka ladda ner en sida. Ex: github.com

wget github.com

Om anslutningen är bra kommer den att ladda ner hemsidan och visa utdata enligt nedan.

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

Ladda ner flera filer

Praktiskt när du måste ladda ner flera filer samtidigt. Detta kan ge dig en idé om hur du automatiserar nedladdning av filer genom vissa skript.

Låt oss försöka ladda ner Python 3.8.1- och 3.5.1-filer.

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

Så, som du kan gissa, är syntaxen enligt nedan.

wget URL1 URL2 URL3

Du måste bara se till att ge utrymme mellan webbadresser.

Begränsa nedladdningshastigheten

Det skulle vara användbart när du vill kontrollera hur lång tid det tar att ladda ner filen med olika bandbredd.

Med alternativet –limit-rate kan du begränsa nedladdningshastigheten.

Här är resultatet av nedladdningen av Nodejs-filen.

[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]

Det tog 0,05 sekunder att ladda ner 13,92 MB filer. Låt oss nu försöka begränsa hastigheten till 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]

Att minska bandbredden tog längre tid att ladda ner – 28 sekunder. Föreställ dig, dina användare klagar på långsam nedladdning och du vet att deras nätverksbandbredd är låg. Du kan snabbt prova –limit-rate för att simulera problemet.

Ladda ner i bakgrunden

Att ladda ner stora filer kan ta den tid eller exemplet ovan där du också vill ställa in hastighetsgränsen. Detta förväntas, men vad händer om du inte vill stirra på din terminal?

Tja, du kan använda -b argument för att starta wget i bakgrunden.

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

Ignorera certifikatfel

Detta är praktiskt när du behöver kontrollera intranätwebbapplikationer som inte har rätt certifikat. Som standard kommer wget att skicka ett felmeddelande när ett certifikat inte är giltigt.

[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'.

Ovanstående exempel är för webbadressen där certifikatet har löpt ut. Som du kan se har det föreslagit att du använder –no-check-certificate som kommer att ignorera all certifikatvalidering.

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

Coolt, inte sant?

Se HTTP-svarshuvudet för en viss plats på terminalen.

Om du använder -S skrivs rubriken ut, som du kan se nedan för 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]

Manipulera User-Agent

Det kan finnas en situation där du vill ansluta en webbplats med en anpassad användaragent. Eller specifik webbläsares användaragent. Detta kan göras genom att ange –user-agent. Exemplet nedan är för användaragenten som MyCustomUserAgent.

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

När en applikation fortfarande är under utveckling kanske du inte har en korrekt URL för att testa den. Eller så kanske du vill testa en enskild HTTP-instans med IP, men du måste ange värdhuvudet för att programmet ska fungera korrekt. I den här situationen skulle –header vara användbar.

Låt oss ta ett exempel på att testa http://10.10.10.1 med värdhuvudet som application.com

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

Inte bara värd, utan du kan injicera vilken rubrik du vill.

Anslut med proxy

Om du arbetar i en DMZ-miljö kanske du inte har tillgång till webbplatser. Men du kan dra nytta av proxy för att ansluta.

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

Glöm inte att uppdatera variabeln $PROXYHOST:PORT med de faktiska.

Anslut med ett specifikt TLS-protokoll

Vanligtvis skulle jag rekommendera att använda OpenSSL för att testa TLS-protokollet. Men du kan också använda wget.

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

Ovanstående tvingar wget att ansluta över TLS 1.2.

Slutsats

Att känna till det nödvändiga kommandot kan hjälpa dig på jobbet. Jag hoppas att ovanstående ger dig en uppfattning om vad du kan göra med wget.