10 wget-kommandoeksempler for at hjælpe dig med fejlfinding af wget-test

Et af de hyppigt brugte hjælpeprogrammer af sysadmin er wget. Det kan være meget praktisk under web-relateret fejlfinding.

Hvad er wget kommando?

wget kommando er et populært Unix/Linux kommandolinjeværktøj til at hente indholdet fra nettet. Det er gratis at bruge og giver en ikke-interaktiv måde at downloade filer fra nettet på. Wget-kommandoen understøtter HTTPS-, HTTP- og FTP-protokoller ud af kassen. Desuden kan du også bruge HTTP-proxyer med det.

Hvordan hjælper wget dig med fejlfinding?

Der er mange måder.

Som sysadmin arbejder du det meste af tiden på en terminal, og når du fejlfinder webapplikationsrelaterede problemer, vil du måske ikke tjekke hele siden, men kun forbindelsen. Eller du vil verificere intranetwebsteder. Eller du vil downloade en bestemt side for at bekræfte indholdet.

wget er ikke-interaktivt, hvilket betyder, at du kan køre det i baggrunden, selv når du er logget af. Der kan være mange tilfælde, hvor det er vigtigt for dig at afbryde forbindelsen til systemet, selv når du henter filer fra nettet. I baggrunden vil wget’en køre og afslutte deres tildelte job.

Det kan også bruges til at få hele hjemmesiden på dine lokale maskiner. Den kan følge links i XHTML- og HTML-sider for at oprette en lokal version. For at gøre det skal den downloade siden rekursivt. Dette er meget nyttigt, da du kan bruge det til at downloade vigtige sider eller websteder til offlinevisning.

Lad os se dem i aktion. Syntaksen for wget er som nedenfor.

wget [option] [URL]

Download en webside

Lad os prøve at downloade en side. Eks: github.com

wget github.com

Hvis forbindelsen er i orden, vil den downloade hjemmesiden og vise output som nedenfor.

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

Download flere filer

Praktisk, når du skal downloade flere filer på én gang. Dette kan give dig en idé om automatisering af download af filer gennem nogle scripts.

  HomePod mini reagerer ikke: 9 måder at løse det på!

Lad os prøve at downloade Python 3.8.1 og 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 gætte, er syntaksen som nedenfor.

wget URL1 URL2 URL3

Du skal bare sørge for at give plads mellem URL’er.

Begræns downloadhastighed

Det ville være nyttigt, når du vil kontrollere, hvor lang tid det tager at downloade din fil med forskellig båndbredde.

Ved at bruge –limit-rate-indstillingen kan du begrænse downloadhastigheden.

Her er outputtet af download af 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 at downloade 13,92 MB filer. Lad os nu prøve at begrænse hastigheden til 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]

Reduktion af båndbredden tog længere tid at downloade – 28 sekunder. Forestil dig, dine brugere klager over langsom download, og du ved, at deres netværksbåndbredde er lav. Du kan hurtigt prøve -limit-rate for at simulere problemet.

  Sådan sorteres værdier i Microsoft Excel

Download i baggrunden

At downloade store filer kan tage den tid eller ovenstående eksempel, hvor du også vil indstille hastighedsgrænsen. Dette forventes, men hvad nu hvis du ikke vil stirre på din terminal?

Nå, du kan bruge -b argument til at starte wget’et i baggrunden.

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

Ignorer certifikatfejl

Dette er praktisk, når du skal tjekke intranet-webapplikationer, der ikke har det korrekte certifikat. Som standard vil wget give en fejl, når et certifikat ikke er gyldigt.

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

Ovenstående eksempel er for URL’en, hvor cert er udløbet. Som du kan se, har det foreslået at bruge –no-check-certificate, som vil ignorere enhver certificering.

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

Fedt, ikke?

Se HTTP-svarheaderen for et givet websted på terminalen.

Ved at bruge -S udskrives headeren, som du kan se nedenfor for 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]

Manipuler User-Agenten

Der kan være en situation, hvor du vil forbinde et websted ved hjælp af en brugerdefineret brugeragent. Eller en bestemt browsers brugeragent. Dette kan gøres ved at angive –user-agent. Nedenstående eksempel er for brugeragenten som MyCustomUserAgent.

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

Når en applikation stadig er under udvikling, har du muligvis ikke en korrekt URL til at teste den. Eller du vil måske teste en individuel HTTP-instans ved hjælp af IP, men du skal angive værtsheaderen for at applikationen fungerer korrekt. I denne situation ville –header være nyttig.

  Hvorfor Notesblok stadig er fantastisk til at tage noter

Lad os tage et eksempel på at teste http://10.10.10.1 med host header som application.com

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

Ikke bare vært, men du kan injicere enhver header, du vil.

Forbind ved hjælp af proxy

Hvis du arbejder på et DMZ-miljø, har du muligvis ikke adgang til internetsider. Men du kan drage fordel af proxy til at oprette forbindelse.

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

Glem ikke at opdatere $PROXYHOST:PORT-variablen med de faktiske.

Forbind ved hjælp af en specifik TLS-protokol

Normalt vil jeg anbefale at bruge OpenSSL til at teste TLS-protokollen. Men du kan også bruge wget.

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

Ovenstående vil tvinge wget til at oprette forbindelse over TLS 1.2.

Konklusion

At kende den nødvendige kommando kan hjælpe dig på arbejdet. Jeg håber, at ovenstående giver dig en idé om, hvad du kan gøre med wget.