10 wget Esempi di comandi per la risoluzione dei problemi

Una delle utility usate di frequente da sysadmin è wget. Può essere molto utile durante la risoluzione dei problemi relativi al Web.


Cos’è il comando wget?

Il comando wget è una popolare utility da riga di comando Unix / Linux per recuperare il contenuto dal Web. È gratuito e offre un modo non interattivo per scaricare file dal Web. Il comando wget supporta i protocolli HTTPS, HTTP e FTP pronti all’uso. Inoltre, puoi anche usare i proxy HTTP con esso.

Come ti aiuta a risolvere i problemi?

Ci sono molti modi.

Come amministratore di sistema, la maggior parte delle volte, lavorerai su un terminale e, durante la risoluzione dei problemi relativi alle applicazioni Web, potresti non voler controllare l’intera pagina ma solo la connettività. Oppure, si desidera verificare i siti Web Intranet. Oppure, si desidera scaricare una determinata pagina per verificare il contenuto.

wget non è interattivo, il che significa che puoi eseguirlo in background anche quando sei disconnesso. Ci possono essere molti casi in cui è essenziale disconnettersi dal sistema anche quando si esegue il recupero di file dal Web. In background, wget verrà eseguito e terminerà il lavoro assegnato.

Può anche essere utilizzato per ottenere l’intero sito Web sui computer locali. Può seguire i collegamenti in XHTML e HTML pagine per creare una versione locale. Per fare ciò, deve scaricare la pagina in modo ricorsivo. Questo è molto utile in quanto puoi usarlo per scaricare pagine o siti importanti per la visualizzazione offline.

Vediamoli in azione. La sintassi di wget è la seguente.

wget [opzione] [URL]

Scarica una pagina Web

Proviamo a scaricare una pagina. Es: github.com

wget github.com

Se la connettività va bene, scaricherà la homepage e mostrerà l’output come di seguito.

[Email protected]: ~ # wget github.com
URL trasformato in HTTPS a causa di una politica HSTS
–2020-02-23 10: 45: 52– https://github.com/
Risoluzione di github.com (github.com) … 140.82.118.3
Connessione a github.com (github.com) | 140.82.118.3 |: 443 … connessa.
Richiesta HTTP inviata, in attesa di risposta … 200 OK
Lunghezza: non specificato [testo / html]
Salvataggio in: “index.html”

index.html [ <=> ] 131,96 K –.- KB / s in 0,04 s

2020-02-23 10:45:52 (2.89 MB / s) – “index.html” salvato [135126]

[Email protected]: ~ #

Scarica più file

Comodo quando devi scaricare più file contemporaneamente. Questo può darti un’idea sull’automazione del download di file tramite alcuni script.

Proviamo a scaricare i file Python 3.8.1 e 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

Quindi, come puoi immaginare, la sintassi è la seguente.

wget URL1 URL2 URL3

Devi solo assicurarti di dare spazio tra gli URL.

Limita la velocità di download

Sarebbe utile quando si desidera verificare quanto tempo impiega il file a scaricare con una larghezza di banda diversa.

Usando l’opzione –limit-rate, puoi limitare la velocità di download.

Ecco l’output del download del file 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
Risoluzione di nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Connessione a nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … connesso.
Richiesta HTTP inviata, in attesa di risposta … 200 OK
Lunghezza: 14591852 (14M) [application / x-xz]
Salvataggio in: “node-v12.16.1-linux-x64.tar.xz”

node-v12.16.1-linux-x64.tar.xz 100% [================================== ================================================== =======>] 13,92 M –.- KB / s in 0,05 s

2020-02-23 10:59:58 (272 MB / s) – “node-v12.16.1-linux-x64.tar.xz” salvato [14591852/14591852]

Sono stati necessari 0,05 secondi per scaricare i file da 13,92 MB. Ora proviamo a limitare la velocità a 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
Risoluzione di nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Connessione a nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … connesso.
Richiesta HTTP inviata, in attesa di risposta … 200 OK
Lunghezza: 14591852 (14M) [application / x-xz]
Salvataggio in: “node-v12.16.1-linux-x64.tar.xz.1”

node-v12.16.1-linux-x64.tar.xz.1 100% [================================ ================================================== =========>] 13,92 M 501 KB / s in 28 secondi

2020-02-23 11:00:46 (500 KB / s) – “node-v12.16.1-linux-x64.tar.xz.1” salvato [14591852/14591852]

La riduzione della larghezza di banda ha richiesto più tempo per il download – 28 secondi. Immagina, i tuoi utenti si lamentano del download lento e sai che la loro larghezza di banda di rete è bassa. Puoi provare rapidamente –limit-rate per simulare il problema.

Scarica in background

Il download di file di grandi dimensioni può richiedere il tempo o l’esempio sopra in cui si desidera impostare anche il limite di velocità. Questo è previsto, ma cosa succede se non vuoi fissare il tuo terminale?

Bene, puoi usare l’argomento -b per avviare la wget in background.

[Email protected]: ~ # wget -b https://slack.com
Continuando in background, pid 25430.
L’output verrà scritto in “wget-log.1”.
[Email protected]: ~ #

Ignora errore certificato

Ciò è utile quando è necessario controllare le applicazioni Web Intranet che non dispongono del certificato appropriato. Per impostazione predefinita, wget genererà un errore quando un certificato non è valido.

[Email protected]: ~ # wget https://expired.badssl.com/
–2020-02-23 11: 24: 59– https://expired.badssl.com/
Risoluzione di expired.badssl.com (expired.badssl.com) … 104.154.89.105
Connessione a expired.badssl.com (expired.badssl.com) | 104.154.89.105 |: 443 … connesso.
ERRORE: impossibile verificare il certificato expired.badssl.com, rilasciato da “CN = COMODO RSA Domain Validation Secure Server CA, O = COMODO CA Limited, L = Salford, ST = Greater Manchester, C = GB”:
Il certificato rilasciato è scaduto.
Per connettersi a expired.badssl.com in modo non sicuro, utilizzare `–no-check-certificate ‘.

L’esempio sopra è per l’URL in cui cert è scaduto. Come puoi vedere, ha suggerito di usare –no-check-certificate che ignorerà qualsiasi convalida del certificato.

[Email protected]: ~ # wget https://untrusted-root.badssl.com/ –no-check-certificate
–2020-02-23 11: 33: 45– https://untrusted-root.badssl.com/
Risoluzione di untrusted-root.badssl.com (untrusted-root.badssl.com) … 104.154.89.105
Connessione a untrusted-root.badssl.com (untrusted-root.badssl.com) | 104.154.89.105 |: 443 … connesso.
ATTENZIONE: impossibile verificare il certificato di untrusted-root.badssl.com, rilasciato da “CN = BadSSL Autorità di certificazione radice non attendibile, O = BadSSL, L = San Francisco, ST = California, C = US”:
Certificato autofirmato rilevato.
Richiesta HTTP inviata, in attesa di risposta … 200 OK
Lunghezza: 600 [testo / html]
Salvataggio in: “index.html.6”

index.html.6 100% [========================================== =================================================>] 600 –.- KB / s in 0s

2020-02-23 11:33:45 (122 MB / s) – “index.html.6” salvato [600/600]

[Email protected]: ~ #

Fantastico, vero??

Intestazione risposta HTTP

Vedi l’intestazione della risposta HTTP di un determinato sito sul terminale.

L’uso di -S stamperà l’intestazione, come puoi vedere di seguito per Coursera.

[Email protected]: ~ # wget https://www.coursera.org -S
–2020-02-23 11: 47: 01– https://www.coursera.org/
Risoluzione di www.coursera.org (www.coursera.org) … 13.224.241.48, 13.224.241.124, 13.224.241.82, …
Collegamento a www.coursera.org (www.coursera.org) | 13.224.241.48 |: 443 … connesso.
Richiesta HTTP inviata, in attesa di risposta…
HTTP / 1.1 200 OK
Tipo di contenuto: testo / html
Lunghezza contenuto: 511551
Connessione: keep-alive
Controllo cache: privato, no-cache, no-store, must-revalidate, max-age = 0
Data: dom, 23 feb 2020 11:47:01 GMT
etag: W /"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
Server: inviato
Set-Cookie: CSRF3-Token = 1583322421.s1b4QL6OXSUGHnRI; Max-Age = 864000; Scade = mer, 04 mar 2020 11:47:02 GMT; Path = /; Dominio = .coursera.org
Set-Cookie: __204u = 9205355775-1582458421174; Max-Age = 31.536.000; Scade = lun, 22 feb 2021 11:47:02 GMT; Path = /; Dominio = .coursera.org
Sicurezza di trasporto rigorosa: età massima = 31536000; includeSubDomains; precarico
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
Opzioni X-Frame: SAMEORIGIN
x-powered-by: Express
Protezione X-XSS: 1; mode = block
X-Cache: Miss dal cloudfront
Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR62-C3
X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ ==
Lunghezza: 511551 (500 K) [testo / html]

Manipolare l’User-Agent

Potrebbe esserci una situazione in cui si desidera connettere un sito utilizzando un user-agent personalizzato. O l’agente utente specifico del browser. Questo è possibile specificando –user-agent. L’esempio seguente è per l’agente utente come MyCustomUserAgent.

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

Intestazione host

Quando un’applicazione è ancora in fase di sviluppo, potresti non disporre di un URL appropriato per testarla. In alternativa, potresti voler testare una singola istanza HTTP utilizzando IP, ma devi fornire l’intestazione host affinché l’applicazione funzioni correttamente. In questa situazione, –header sarebbe utile.

Facciamo un esempio di test http://10.10.10.1 con intestazione host come application.com

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

Non solo host, ma puoi iniettare qualsiasi intestazione che ti piace.

Connetti tramite proxy

Se lavori in un ambiente DMZ, potresti non avere accesso ai siti Internet. Ma puoi sfruttare il proxy per connetterti.

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

Non dimenticare di aggiornare $ PROXYHOST: variabile PORT con quelle effettive.

Connetti utilizzando un protocollo TLS specifico

Di solito, consiglierei di usare OpenSSL per testare il protocollo TLS. Ma puoi usare anche wget.

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

Quanto sopra imporrà a wget di connettersi tramite TLS 1.2.

Conclusione

Conoscere il comando necessario può aiutarti sul lavoro. Spero che quanto sopra ti dia un’idea di cosa puoi fare con wget.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map