Unul dintre utilitarele utilizate frecvent de administratorul de sistem este wget. Poate fi foarte util în timpul depanării legate de web.
Cuprins
Ce este comanda wget?
Comanda wget este un utilitar popular de linie de comandă Unix/Linux pentru preluarea conținutului de pe web. Este gratuit de utilizat și oferă o modalitate non-interactivă de a descărca fișiere de pe web. Comanda wget acceptă protocoalele HTTPS, HTTP și FTP. Mai mult, puteți utiliza și proxy HTTP cu acesta.
Cum vă ajută wget să depanați?
Sunt multe cai.
În calitate de administrator de sistem, de cele mai multe ori, veți lucra la un terminal și, atunci când rezolvați probleme legate de aplicațiile web, este posibil să nu doriți să verificați întreaga pagină, ci doar conectivitatea. Sau doriți să verificați site-urile intranet. Sau doriți să descărcați o anumită pagină pentru a verifica conținutul.
wget nu este interactiv, ceea ce înseamnă că îl puteți rula în fundal chiar și atunci când sunteți deconectat. Pot exista multe situații în care este esențial să vă deconectați de la sistem chiar și atunci când faceți recuperarea fișierelor de pe web. În fundal, wget-ul va rula și va termina lucrarea atribuită.
De asemenea, poate fi folosit pentru a obține întregul site web pe computerele dvs. locale. Poate urma link-uri din paginile XHTML și HTML pentru a crea o versiune locală. Pentru a face acest lucru, trebuie să descarce pagina în mod recursiv. Acest lucru este foarte util, deoarece îl puteți folosi pentru a descărca pagini sau site-uri importante pentru vizualizare offline.
Să-i vedem în acțiune. Sintaxa wget-ului este ca mai jos.
wget [option] [URL]
Descărcați o pagină web
Să încercăm să descarcăm o pagină. Ex: github.com
wget github.com
Dacă conectivitatea este bună, atunci va descărca pagina de pornire și va afișa rezultatul ca mai jos.
[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]:~#
Descărcați mai multe fișiere
La îndemână atunci când trebuie să descărcați mai multe fișiere simultan. Acest lucru vă poate oferi o idee despre automatizarea descărcării fișierelor prin intermediul unor scripturi.
Să încercăm să descarcăm fișierele Python 3.8.1 și 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
Deci, după cum puteți ghici, sintaxa este ca mai jos.
wget URL1 URL2 URL3
Trebuie doar să vă asigurați că oferiți spațiu între adrese URL.
Limitați viteza de descărcare
Ar fi util atunci când doriți să verificați cât timp durează descărcarea fișierului dvs. la o lățime de bandă diferită.
Folosind opțiunea –limit-rate, puteți limita viteza de descărcare.
Iată rezultatul descărcării fișierului 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]
A durat 0,05 secunde pentru a descărca fișiere de 13,92 MB. Acum, să încercăm să limităm viteza la 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]
Reducerea lățimii de bandă a durat mai mult până la descărcare – 28 de secunde. Imaginează-ți că utilizatorii tăi se plâng de descărcarea lentă și știi că lățimea de bandă a rețelei lor este redusă. Puteți încerca rapid –limit-rate pentru a simula problema.
Descărcați în fundal
Descărcarea fișierelor mari poate dura timp sau exemplul de mai sus în care doriți să setați și limita de rată. Acest lucru este de așteptat, dar ce se întâmplă dacă nu doriți să vă uitați la terminalul dvs.?
Ei bine, puteți folosi argumentul -b pentru a porni wget în fundal.
[email protected]:~# wget -b https://slack.com Continuing in background, pid 25430. Output will be written to ‘wget-log.1’. [email protected]:~#
Ignorați eroarea certificatului
Acest lucru este util atunci când trebuie să verificați aplicațiile web intranet care nu au certificatul adecvat. În mod implicit, wget va afișa o eroare atunci când un certificat nu este valid.
[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'.
Exemplul de mai sus este pentru adresa URL la care certificatul a expirat. După cum puteți vedea, a sugerat utilizarea –no-check-certificate, care va ignora orice validare a certificatului.
[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]:~#
Cool, nu-i așa?
Vedeți antetul răspunsului HTTP al unui anumit site pe terminal.
Folosind -S va imprima antetul, așa cum puteți vedea mai jos pentru 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]
Manipulați User-Agent
Este posibil să existe o situație în care doriți să conectați un site utilizând un user-agent personalizat. Sau user-agent al browserului specific. Acest lucru este posibil prin specificarea –user-agent. Exemplul de mai jos este pentru agentul utilizator ca MyCustomUserAgent.
[email protected]:~# wget https://gf.dev --user-agent="MyCustomUserAgent"
Când o aplicație este încă în dezvoltare, este posibil să nu aveți o adresă URL adecvată pentru a o testa. Sau, poate doriți să testați o instanță HTTP individuală folosind IP, dar trebuie să furnizați antetul gazdei pentru ca aplicația să funcționeze corect. În această situație, –header ar fi util.
Să luăm un exemplu de testare a http://10.10.10.1 cu antetul gazdei ca application.com
wget --header="Host: application.com" http://10.10.10.1
Nu doar gazdă, dar puteți injecta orice antet doriți.
Conectați-vă folosind Proxy
Dacă lucrați într-un mediu DMZ, este posibil să nu aveți acces la site-uri de internet. Dar puteți profita de proxy pentru a vă conecta.
wget -e use_proxy=yes http_proxy=$PROXYHOST:PORT http://externalsite.com
Nu uitați să actualizați variabila $PROXYHOST:PORT cu cele reale.
Conectați-vă folosind un protocol TLS specific
De obicei, aș recomanda utilizarea OpenSSL pentru a testa protocolul TLS. Dar, puteți folosi și wget.
wget –secure-protocol=TLSv1_2 https://example.com
Cele de mai sus vor forța wget să se conecteze prin TLS 1.2.
Concluzie
Cunoașterea comenzii necesare vă poate ajuta la locul de muncă. Sper că cele de mai sus vă oferă o idee despre ce puteți face cu wget.