10 exemplos de comandos wget para ajudá-lo a solucionar problemas – teste wget

Um dos utilitários mais 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 utilitário popular 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 protocolos HTTPS, HTTP e FTP prontos para uso. Além disso, você também pode usar proxies HTTP com ele.

Como o wget ajuda você a solucionar problemas?

Existem muitos caminhos.

Como administrador de sistema, na maioria das vezes, você estará trabalhando 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 baixar uma determinada página para verificar o conteúdo.

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 que você se desconecte do sistema, mesmo ao fazer a recuperação de arquivos da web. Em segundo plano, o wget será executado e terminará o trabalho atribuído.

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

  O que aconteceu com o LimeTorrents?

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

wget [option] [URL]

Baixar uma página da web

Vamos tentar baixar uma página. Ex: github.com

wget github.com

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

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

Baixar vários arquivos

Útil quando você precisa baixar vários arquivos de uma só vez. Isso pode lhe dar uma ideia sobre como automatizar o download de arquivos por meio de alguns scripts.

Vamos tentar baixar os 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 adivinhar, a sintaxe é a seguinte.

wget URL1 URL2 URL3

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

Limitar a velocidade de download

Seria útil quando você deseja verificar quanto tempo seu arquivo leva para baixar 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.

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

Demorou 0,05 segundos para baixar arquivos de 13,92 MB. Agora, vamos tentar limitar a velocidade para 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]

Reduzir a largura de banda levou mais tempo para baixar – 28 segundos. Imagine que seus usuários estão reclamando de download lento e você sabe que a largura de banda da rede deles é baixa. Você pode tentar rapidamente –limit-rate para simular o problema.

  Ocultar / Reexibir ícones da área de trabalho no OS X com comando de terminal

Baixe em segundo plano

O download de arquivos grandes pode demorar ou o exemplo acima em que você deseja definir o limite de taxa também. 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.

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

Ignorar erro de certificado

Isso é útil quando você precisa verificar aplicativos Web de intranet que não possuem o certificado adequado. Por padrão, o wget lançará um erro quando um certificado não for válido.

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

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

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

Legal, não é?

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

Manipular o User-Agent

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

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

Quando um aplicativo ainda está em desenvolvimento, talvez você não tenha uma URL adequada para testá-lo. Ou você pode querer 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.

  Adicione destaques de estilo médio de um artigo ao compartilhá-lo

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

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

Não apenas host, 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 aproveitar o proxy para se 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 usar o OpenSSL para testar o protocolo TLS. Mas você também pode usar o wget.

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

O acima forçará o wget a se conectar por TLS 1.2.

Conclusão

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