10 exemplos de comando wget para ajudá-lo a solucionar problemas

Um dos utilitários freqüentemente usados ​​pelo sysadmin é o wget. Pode ser muito útil durante a solução de problemas relacionados à Web.


O que é o comando wget?

O comando wget é um popular utilitário de linha de comando Unix / Linux para buscar o conteúdo da web. É de uso gratuito e fornece uma maneira não interativa de baixar arquivos da web. O comando wget suporta os protocolos HTTPS, HTTP e FTP prontos para uso. Além disso, você também pode usar proxies HTTP com ele.

Como ele ajuda a solucionar problemas?

Existem muitos caminhos.

Como administrador de sistemas, na maioria das vezes, você trabalha em um terminal e, ao solucionar problemas relacionados a aplicativos da web, talvez não queira verificar a página inteira, mas apenas a conectividade. Ou você deseja verificar os sites da intranet. Ou você deseja fazer o download de uma determinada página para verificar o conteúdo.

O wget não é interativo, o que significa que você pode executá-lo em segundo plano, mesmo quando estiver desconectado. Pode haver muitos casos em que é essencial desconectar-se do sistema, mesmo quando estiver recuperando arquivos da Web. Em segundo plano, o wget será executado e finalizará o trabalho designado.

Também pode ser usado para obter o site inteiro em suas máquinas locais. Pode seguir os links em XHTML e HTML páginas para criar uma versão local. Para fazer isso, é necessário baixar a página recursivamente. Isso é muito útil, pois você pode usá-lo para baixar páginas ou sites importantes para visualização offline.

Vamos vê-los em ação. A sintaxe do wget é a seguinte.

wget [opção] [URL]

Faça o download de uma página da web

Vamos tentar fazer o download de uma página. Ex: github.com

wget github.com

Se a conectividade estiver correta, ele fará o download da página inicial e mostrará a saída como abaixo.

[protegido por email]: ~ # wget github.com
URL transformado em HTTPS devido a uma política HSTS
–2020-02-23 10: 45: 52– https://github.com/
Resolvendo github.com (github.com) … 140.82.118.3
Conectando-se ao github.com (github.com) | 140.82.118.3 |: 443 … conectado.
Solicitação HTTP enviada, aguardando resposta … 200 OK
Comprimento: não especificado [text / html]
Salvando em: “index.html”

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

2020-02-23 10:45:52 (2,89 MB / s) – “index.html” salvo [135126]

[protegido por email]: ~ #

Baixar vários arquivos

Prático quando você precisa baixar vários arquivos de uma só vez. Isso pode lhe dar uma idéia sobre como automatizar o download de arquivos através de alguns scripts.

Vamos tentar fazer o download dos arquivos 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

Então, como você pode imaginar, a sintaxe é a seguinte.

wget URL1 URL2 URL3

Você só precisa garantir espaço entre os URLs.

Limitar a velocidade de download

Seria útil quando você quiser verificar quanto tempo seu arquivo leva para fazer o download em diferentes larguras de banda..

Usando a opção –limit-rate, você pode limitar a velocidade do download.

Aqui está a saída do download do arquivo Nodejs.

[protegido por email]: ~ # 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
Resolvendo nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Conectando ao nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … conectado.
Solicitação HTTP enviada, aguardando resposta … 200 OK
Comprimento: 14591852 (14M) [application / x-xz]
Salvando em: “node-v12.16.1-linux-x64.tar.xz”

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

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

Demorou 0,05 segundos para baixar arquivos 13,92 MB. Agora, vamos tentar limitar a velocidade para 500K.

[protegido por email]: ~ # 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
Resolvendo nodejs.org (nodejs.org) … 104.20.23.46, 104.20.22.46, 2606: 4700: 10 :: 6814: 162e, …
Conectando ao nodejs.org (nodejs.org) | 104.20.23.46 |: 443 … conectado.
Solicitação HTTP enviada, aguardando resposta … 200 OK
Comprimento: 14591852 (14M) [application / x-xz]
Salvando em: “node-v12.16.1-linux-x64.tar.xz.1”

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

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

A redução da largura de banda demorou mais para ser baixada – 28 segundos. Imagine, seus usuários estão reclamando do download lento e você sabe que a largura de banda da rede é baixa. Você pode tentar rapidamente –limit-rate para simular o problema.

Download em segundo plano

O download de arquivos grandes pode demorar algum tempo ou no exemplo acima, no qual você também deseja definir o limite de taxa. Isso é esperado, mas e se você não quiser olhar para o seu terminal?

Bem, você pode usar o argumento -b para iniciar o wget em segundo plano.

[protegido por email]: ~ # wget -b https://slack.com
Continuando em segundo plano, pid 25430.
A saída será gravada em ‘wget-log.1’.
[protegido por email]: ~ #

Ignorar erro de certificado

Isso é útil quando você precisa verificar os aplicativos da intranet que não possuem o certificado adequado. Por padrão, o wget gera um erro quando um certificado não é válido.

[protegido por email]: ~ # wget https://expired.badssl.com/
–2020-02-23 11: 24: 59– https://expired.badssl.com/
Resolvendo expired.badssl.com (expired.badssl.com) … 104.154.89.105
Conectando a expired.badssl.com (expired.badssl.com) | 104.154.89.105 |: 443 … conectado.
ERRO: não é possível verificar o certificado expired.badssl.com, emitido por “CN = CA do servidor seguro de validação de domínio COMODO RSA, O = COMODO CA Limited, L = Salford, ST = Grande Manchester, C = GB”:
O certificado emitido expirou.
Para conectar-se ao expired.badssl.com de maneira insegura, use `–no-check-certificate ‘.

O exemplo acima é para o URL em que o certificado expirou. Como você pode ver, sugeriu o uso de –no-check-certificate, que ignorará qualquer validação de certificado.

[protegido por email]: ~ # wget https://untrusted-root.badssl.com/ –no-check-certificate
–2020-02-23 11: 33: 45– https://untrusted-root.badssl.com/
Resolução de raiz não confiável.badssl.com (raiz não confiável.badssl.com) … 104.154.89.105
Conectando a raiz não confiável.badssl.com (raiz não confiável.badssl.com) | 104.154.89.105 |: 443 … conectado.
AVISO: não é possível verificar o certificado de untrusted-root.badssl.com, emitido por ‘CN = Autoridade de Certificação Raiz Não Confiável CN ​​= BadSSL, O = BadSSL, L = São Francisco, ST = Califórnia, C = US ‘:
Certificado autoassinado encontrado.
Solicitação HTTP enviada, aguardando resposta … 200 OK
Comprimento: 600 [text / html]
Salvando em: “index.html.6”

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

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

[protegido por email]: ~ #

Legal, não é??

Cabeçalho de resposta HTTP

Veja o cabeçalho de resposta HTTP de um determinado site no terminal.

Usar -S imprimirá o cabeçalho, como você pode ver abaixo para Coursera.

[protegido por email]: ~ # wget https://www.coursera.org -S
–2020-02-23 11: 47: 01– https://www.coursera.org/
Resolvendo www.coursera.org (www.coursera.org) … 13.224.241.48, 13.224.241.124, 13.224.241.82, …
Conectando a www.coursera.org (www.coursera.org) | 13.224.241.48 |: 443 … conectado.
Solicitação HTTP enviada, aguardando resposta…
HTTP / 1.1 200 OK
Tipo de Conteúdo: text / html
Comprimento do conteúdo: 511551
Conexão: keep-alive
Controle de cache: privado, sem cache, sem armazenamento, deve revalidar, idade máxima = 0
Data: Dom, 23 de fevereiro de 2020 11:47:01 GMT
etag: W /"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
Servidor: enviado
Set-Cookie: CSRF3-Token = 1583322421.s1b4QL6OXSUGHnRI; Idade máxima = 864000; Expira = quarta-feira, 04 mar 2020 11:47:02 GMT; Caminho = /; Domínio = .coursera.org
Set-Cookie: __204u = 9205355775-1582458421174; Idade máxima = 31536000; Expira = Seg, 22 de fevereiro de 2021 11:47:02 GMT; Caminho = /; Domínio = .coursera.org
Segurança de transporte estrita: max-age = 31536000; includeSubDomains; pré-carga
Opções de tipo de conteúdo X: nosniff
x-coursera-render-mode: html
x-coursera-render-version: v2
ID do pedido de X-Coursera: NCnPPlYyEeqfcxIHPk5Gqw
X-Coursera-Trace-Id-Hex: a5ef7028d77ae8f8
x-enviado-upstream-service-time: 1090
Opções de quadro X: SAMEORIGIN
x-powered-by: Express
Proteção X-XSS: 1; mode = bloco
X-Cache: falta da nuvem
Via: 1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: LHR62-C3
X-Amz-Cf-Id: vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ ==
Comprimento: 511551 (500 K) [texto / html]

Manipular o agente do usuário

Pode haver uma situação em que você deseja conectar um site usando um user agent personalizado. Ou agente do usuário do navegador específico. Isso é possível especificando –user-agent. O exemplo abaixo é para o agente do usuário como MyCustomUserAgent.

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

Cabeçalho do host

Quando um aplicativo ainda está em desenvolvimento, você pode não ter um URL adequado para testá-lo. Ou, você pode testar uma instância HTTP individual usando IP, mas precisa fornecer o cabeçalho do host para que o aplicativo funcione corretamente. Nessa situação, –header seria útil.

Vamos dar um exemplo de teste http://10.10.10.1 com cabeçalho de host como application.com

wget –header ="Anfitrião: application.com" http://10.10.10.1

Não apenas hospedar, mas você pode injetar qualquer cabeçalho que desejar.

Conectar usando Proxy

Se você estiver trabalhando em um ambiente DMZ, talvez não tenha acesso a sites da Internet. Mas você pode tirar proveito do proxy para conectar.

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

Não se esqueça de atualizar a variável $ PROXYHOST: PORT com as reais.

Conecte-se usando um protocolo TLS específico

Normalmente, eu recomendaria o uso do OpenSSL para testar o protocolo TLS. Mas você também pode usar o wget.

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

O exemplo acima forçará o wget a se conectar através do TLS 1.2.

Conclusão

Conhecer o comando necessário pode ajudá-lo no trabalho. Espero que o acima tenha uma idéia do que você pode fazer com o wget.

TAG:

  • 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