10 примера команди вгет који ће вам помоћи у решавању проблема – вгет тест

Jedan od često korišćenih alata od strane sistem administratora je `wget`. Pokazao se izuzetno korisnim tokom rešavanja različitih problema vezanih za veb.

Šta predstavlja `wget` komanda?

`wget` komanda je široko rasprostranjen uslužni program komandne linije koji se koristi na Unix/Linux sistemima za preuzimanje sadržaja sa interneta. Besplatan je za korišćenje i omogućava neinteraktivan način preuzimanja datoteka sa veba. Ova komanda podržava HTTPS, HTTP i FTP protokole direktno, bez potrebe za dodatnim podešavanjima. Takođe, omogućava korišćenje HTTP proxy servera.

Kako `wget` pomaže u rešavanju problema?

Postoji nekoliko načina na koje ovaj alat može biti od pomoći.

Kao sistem administrator, većinu vremena provodite radeći u terminalu, a kada rešavate probleme vezane za veb aplikacije, možda nije neophodno da pregledate celu stranicu. Umesto toga, možda je dovoljno samo da proverite povezanost. Ili, možda je potrebno da verifikujete intranet veb lokacije ili da preuzmete određenu stranicu kako biste proverili njen sadržaj.

`wget` radi u neinteraktivnom režimu, što znači da ga možete pokrenuti u pozadini čak i kada ste odjavljeni sa sistema. Ovo može biti korisno u situacijama kada je potrebno da se isključite sa sistema dok se preuzimanje datoteka sa interneta i dalje odvija. U pozadini, `wget` će nastaviti da radi i izvršiće svoj zadatak.

Takođe, `wget` se može koristiti za preuzimanje celokupne veb lokacije na vaš lokalni računar. Može pratiti veze unutar XHTML i HTML stranica kako bi stvorio lokalnu verziju veb lokacije. Da bi ovo postigao, `wget` mora rekurzivno da preuzima stranice. Ova funkcionalnost je vrlo korisna kada je potrebno preuzeti važne stranice ili cele sajtove za pregledanje van mreže.

Pogledajmo kako `wget` radi u praksi. Osnovna sintaksa komande je sledeća:

wget [opcija] [URL]

Preuzimanje veb stranice

Pokušajmo da preuzmemo jednu veb stranicu. Na primer, github.com:

wget github.com

Ukoliko je konekcija uspešna, preuzeće se početna stranica i ispisati rezultat kao u sledećem primeru:

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

Preuzimanje više datoteka

Ovo može biti korisno kada je potrebno preuzeti više datoteka odjednom. Takođe, može dati ideju kako automatizovati proces preuzimanja datoteka putem skripti.

Pokušajmo da preuzmemo Python 3.8.1 i 3.5.1 verzije:

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

Kao što možete zaključiti, sintaksa je sledeća:

wget URL1 URL2 URL3

Potrebno je samo razdvojiti URL adrese razmakom.

Ograničavanje brzine preuzimanja

Ova opcija može biti korisna kada želite da testirate koliko vremena je potrebno za preuzimanje datoteke pri različitim brzinama prenosa podataka.

Koristeći opciju `–limit-rate`, možete ograničiti brzinu preuzimanja.

Sledeći rezultat je prikaz preuzimanja Node.js datoteke:

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

Bilo je potrebno 0.05 sekundi da se preuzme datoteka od 13.92 MB. Sada, pokušajmo da ograničimo brzinu na 500 KB.

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

Smanjenje protoka je produžilo vreme preuzimanja na 28 sekundi. Zamislite da se korisnici žale na sporo preuzimanje, a vi znate da je njihov protok mreže spor. Možete brzo koristiti opciju `–limit-rate` da simulirate takav problem.

Preuzimanje u pozadini

Preuzimanje velikih datoteka može potrajati, ili kao u prethodnom primeru, kada želite da podesite ograničenje brzine. Ovo je očekivano, ali šta ako ne želite da gledate u terminal?

Možete koristiti argument `-b` da pokrenete `wget` u pozadini.

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

Zanemarivanje greške sertifikata

Ova opcija je korisna kada je potrebno proveriti intranet veb aplikacije koje nemaju odgovarajući sertifikat. Po defaultu, `wget` će prijaviti grešku kada sertifikat nije validan.

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

Gornji primer je za URL gde je sertifikat istekao. Kao što vidite, predloženo je korišćenje `–no-check-certificate`, koje ignoriše bilo kakvu validaciju sertifikata.

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

Zar to nije odlično?

Pogledajte zaglavlje HTTP odgovora za određenu lokaciju u terminalu.

Korišćenjem opcije `-S` će se ispisati zaglavlje, kao što možete videti ispod za 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]
  

Manipulisanje User-Agentom

Možda ćete se naći u situaciji gde želite da se povežete na neku lokaciju koristeći prilagođeni User-Agent, ili User-Agent određenog veb pregledača. To je moguće uraditi navođenjem opcije `–user-agent`. Sledeći primer prikazuje kako se koristi User-Agent pod imenom „MyCustomUserAgent“:

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

Kada je aplikacija još u razvoju, možda nemate odgovarajući URL za testiranje. Ili, možda želite testirati pojedinačnu HTTP instancu koristeći IP adresu, ali morate navesti zaglavlje Host da bi aplikacija ispravno funkcionisala. U ovom slučaju, `–header` opcija je od pomoći.

Uzmimo za primer testiranje http://10.10.10.1 sa zaglavljem Host kao „application.com“:

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

Ne samo Host, već možete ubaciti bilo koje zaglavlje koje želite.

Povezivanje putem proxy servera

Ukoliko radite u DMZ okruženju, možda nećete imati direktan pristup Internet lokacijama. U tom slučaju možete iskoristiti proxy server za povezivanje.

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

Ne zaboravite da promenite varijablu `$PROXYHOST:PORT` sa odgovarajućim vrednostima.

Povezivanje korišćenjem specifičnog TLS protokola

Uobičajeno je koristiti OpenSSL za testiranje TLS protokola, ali možete koristiti i `wget` za tu svrhu.

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

Gore navedena komanda će naterati `wget` da se poveže preko TLS 1.2 protokola.

Zaključak

Poznavanje odgovarajućih komandi može vam pomoći u svakodnevnom radu. Nadamo se da vam je ovaj pregled dao uvid u mogućnosti koje pruža `wget`.