Header Ads

Como usar o curl para baixar arquivos da linha de comando do Linux

O comando curl do Linux pode fazer muito mais do que baixar arquivos. Descubra do que o curl é capaz e quando você deve usá-lo em vez do wget.

curlvs. wget: Qual é a diferença?

As pessoas geralmente lutam para identificar os pontos fortes relativos dos comandos wget e curl. Os comandos têm alguma sobreposição funcional. Cada um deles pode recuperar arquivos de locais remotos, mas é aí que a semelhança termina.

O wget é uma ferramenta fantástica para baixar conteúdo e arquivos. Ele pode baixar arquivos, páginas da web e diretórios. Ele contém rotinas inteligentes para percorrer links em páginas da Web e baixar recursivamente o conteúdo de um site inteiro.É insuperável como um gerenciador de downloads na linha de comando.

curl satisfaz uma necessidade completamente diferente. Sim, ele pode recuperar arquivos, mas não pode navegar recursivamente em um site procurando conteúdo para recuperar.O que o curl realmente faz é permitir que você interaja com sistemas remotos, fazendo solicitações a esses sistemas e recuperando e exibindo suas respostas para você. Essas respostas podem muito bem ser conteúdo e arquivos da página da web, mas também podem conter dados fornecidos por meio de um serviço da web ou API como resultado da “ questão ”solicitado pelo pedido de ondulação.

E a ondulação não se limita a sites.O curl suporta mais de 20 protocolos, incluindo HTTP, HTTPS, SCP, SFTP e FTP.E, sem dúvida, devido ao manuseio superior dos pipes do Linux, o curl pode ser mais facilmente integrado a outros comandos e scripts.

O autor do curl possui uma página da web que descreve as diferenças que ele vê entre o curl e o wget.

Instalando o curl

Dos computadores usados ​​para pesquisar este artigo, o Fedora 31 e o Manjaro 18.1.0 já tinham o curl instalado.o curl teve que ser instalado no Ubuntu 18.04 LTS. No Ubuntu, execute este comando para instalá-lo:

 sudo apt-get install curl 

A versão curl

A opção --version torna o relatório de encargos sua versão. Ele também lista todos os protocolos suportados.

 curl --version 

Recuperando uma página da Web

Se apontarmos a curvatura para uma página da Web, ela será recuperada para nós.

 enrolar https://www. bbc. com 

Mas sua ação padrão é despejá-lo na janela do terminal como código-fonte.

Cuidado: se você não disser ao enrolamento que deseja algo armazenado como arquivo, ele sempre será despejado na janela do terminal. Se o arquivo que está sendo recuperado for um arquivo binário, o resultado poderá ser imprevisível.O shell pode tentar interpretar alguns dos valores de bytes no arquivo binário como caracteres de controle ou seqüências de escape.

Salvando dados em um arquivo

Vamos dizer ao roteador para redirecionara saída em um arquivo:

 enrolar https://www. bbc. com >bbc. html 

Desta vez, não vemos as informações recuperadas, elas são enviadas diretamente para o arquivo para nós. Como não há saída da janela do terminal a ser exibida, o curl gera um conjunto de informações de progresso.

Ele não fez isso no exemplo anterior, porque as informações de progresso estariam espalhadas pela fonte da página da webcódigo, portanto, o curl o suprimiu automaticamente.

Neste exemplo, o curl detecta que a saída está sendo redirecionada para um arquivo e que é seguro gerar as informações de progresso.

As informações fornecidas são:

  • % Total: o valor total a ser recuperado.
  • % recebido: a porcentagem e os valores reais dos dados recuperadosaté o momento.
  • % Xferd: a porcentagem e o envio real, se os dados estiverem sendo carregados.
  • Carga média da velocidade: a velocidade média do download.
  • Velocidade médiaUpload: a velocidade média de upload.
  • Tempo total: a duração total estimada da transferência.
  • Tempo gasto: o tempo decorrido até o momento para essa transferência.
  • Tempo restante: o tempo estimado restante para a transferênciaete
  • Velocidade atual: a velocidade atual de transferência para esta transferência.

Como redirecionamos a saída de curl para um arquivo, agora temos um arquivo chamado “ bbc. html. ”

Clicar duas vezes nesse arquivo abrirá o navegador padrão para exibir a página da web recuperada.

Observe que o endereço na barra de endereços do navegador é um arquivo local neste computador, não um site remoto.

Não precisamos redirecionar a saída para criar um arquivo. Podemos criar um arquivo usando a opção -o (output) e instruindo o curl para criar o arquivo. Aqui estamos usando a opção -o e fornecendo o nome do arquivo que queremos criar "bbc. html." ”

 curl -o bbc. htmlhttps://www. bbc. com 

Usando uma barra de progresso para monitorar downloads

Para que as informações de download em texto sejam substituídas por uma simplesbarra de progresso, use a opção - # (barra de progresso).

 ondule -x -o bbc. html https://www. bbc. com 

Reiniciando um download interrompido

É fácil reiniciar um download que foi encerrado ou interrompido. Vamos iniciar o download de um arquivo considerável. Usaremos a versão mais recente do Suporte a Longo Prazo do Ubuntu 18.04. Estamos usando a opção --output para especificar o nome do arquivo no qual queremos salvá-lo: ubuntu180403. iso. ”

 curl -output ubuntu18043. iso http://releases. ubuntu. com/18.04.3/ubuntu-18.04.3-desktop-amd64. iso[/PREunette

O download inicia e funcionacaminho para a conclusão.

Se interrompermos forçosamente o download com Ctrl + C, voltaremos ao prompt de comando e o download será abandonado.>

Para reiniciar o download, use a opção -C (continue em). Isso faz com que o curl reinicie o download em um ponto ou deslocamento especificado no arquivo de destino. Se você usar um hífen - como o deslocamento, o curl examinará a parte já baixada do arquivo e determinará o deslocamento correto a ser usado.

 curl -C - --put ubuntu18043. iso http://releases. ubuntu. com/18.04.3/ubuntu-18.04.3-desktop-amd64. iso[/PREunette

O download é reiniciado. curl relata o deslocamento no qual está reiniciando.

Recuperando cabeçalhos HTTP

Com a opção -I (head), você pode recuperar os cabeçalhos HTTPsó.É o mesmo que enviar o comando HTTP HEAD para um servidor da Web.

 enrola -I www. twitter. com 

Este comandorecupera apenas informações;ele não baixa nenhuma página ou arquivo da web.

Fazendo download de vários URLs

Usando xargs, podemos fazer o download de vários URLs de uma só vez. Talvez desejemos fazer o download de uma série de páginas da Web que compõem um único artigo ou tutorial.

Copie esses URLs para um editor e salve-os em um arquivo chamado “ urls-to-download. txt. ”Podemos usar xargs para tratar o conteúdo de cada linha do arquivo de texto como um parâmetro que ele irá alimentar para curvar, por sua vez.

 https://tutorials. ubuntu. com/tutorial/tutorial-create-a-usb-stick-on-ubuntu # 0 https://tutorials. ubuntu. com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1 https: //tutorials. ubuntu. com / tutorial / tutorial-criar-um-usb-stick-no-Ubuntu # 2 https://tutorials. ubuntu. com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3 https: //tutorials. ubuntu. com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4 https://tutorials. ubuntu. com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

Este é o comando que precisamos usar para que o xargs passe esses URLs para ondular um de cada vez:

 xargs -n 1 curl -O <urls-to-download. txt 

Observe que este comando usa o comando de saída -O (arquivo remoto), que usa letras maiúsculas “ O. ”Essa opção faz com que o curl salve o arquivo recuperado com o mesmo nome que o arquivo possui no servidor remoto.

A opção -n 1 diz ao xargs para tratar cada linha do arquivo de texto como um único parâmetro.

Ao executar o comando, você verá vários downloads iniciarem e terminarem, um após o outro.

O check-in no navegador de arquivos mostraos vários arquivos foram baixados. Cada um tem o nome que tinha no servidor remoto.

RELACIONADO: Como usar o comando xargs no Linux

Fazendo download de arquivos de um servidor FTP

É fácil usar o enrolamento com um servidor FTP (File Transfer Protocol), mesmo que você precise se autenticar com um nome de usuário e senha. Para passar um nome de usuário e senha com ondulação, use a opção -u (usuário) e digite o nome de usuário, dois pontos “: ” e a senha.Não coloque um espaço antes ou depois dos dois pontos.

Este é um servidor FTP gratuito para teste hospedado pelo Rebex.O site de FTP de teste possui um nome de usuário predefinido de “ demo ” e a senha é “ senha. ”Não use esse tipo de nome de usuário e senha fracos em uma produção ou "real" ”Servidor FTP.

 curl -u demo: senha ftp://test. rebex. net 

o curl descobre que estamos apontando para um FTPservidor e retorna uma lista dos arquivos presentes no servidor.

O único arquivo neste servidor é um “ readme. txt ”arquivo, de 403 bytes de comprimento. Vamos recuperá-lo. Use o mesmo comando de um momento atrás, com o nome do arquivo anexado:

 curl -u demo: senha ftp://test. rebex. net/readme. txt 

O arquivo é recuperado e o curl exibe seu conteúdo na janela do terminal.

Em quase todos os casos, será maisÉ conveniente que o arquivo recuperado seja salvo em disco para nós, em vez de exibido na janela do terminal. Mais uma vez, podemos usar o comando de saída -O (arquivo remoto) para salvar o arquivo no disco, com o mesmo nome de arquivo que ele possui no servidor remoto.

 curl -O -u demo: senha ftp://test. rebex. net/readme. txt[/PREunette

O arquivo é recuperado e salvo no disco. Podemos usar ls para verificar os detalhes do arquivo. Ele tem o mesmo nome que o arquivo no servidor FTP e tem o mesmo comprimento, 403 bytes.

 ls -hl readme. txt 

RELACIONADO: Como usar o comando FTP no Linux

Enviando parâmetros para servidores remotos

Alguns servidores remotos aceitam parâmetros em solicitações enviadas a eles. Os parâmetros podem ser usados ​​para formatar os dados retornados, por exemplo, ou podem ser usados ​​para selecionar os dados exatos que o usuário deseja recuperar. Geralmente, é possível interagir com as APIs (interfaces de programação de aplicativos da web) usando curl.

Como um exemplo simples, o site ipify tem uma API que pode ser consultada para verificar seu endereço IP externo.

 enrolar https://api. ipify. org 

Adicionando o parâmetro format ao comando, com o valor de “ json ”podemos novamente solicitar nosso endereço IP externo, mas desta vez os dados retornados serão codificados no formato JSON.

 enrolar https://api. ipify. org?format=json

Aqui está outro exemplo que faz uso de uma API do Google. Retorna um objeto JSON que descreve um livro.O parâmetro que você deve fornecer é o número ISBN (International Standard Book Number) de um livro. Você pode encontrá-las na contracapa da maioria dos livros, geralmente abaixo de um código de barras.O parâmetro que usaremos aqui é 0131103628.

 enrolar https://www. googleapis. com/books/v1/volumes?q=isbn: 0131103628 

Os dados retornados são abrangentes:

Às vezes enrola, às vezes wget

Se eu quisesse baixar o conteúdo de um site e fazer com que a estrutura em árvore do site fosse pesquisada recursivamente por esse conteúdo, eu usaria o wget.

Se eu quisesse interagir com um servidor remoto ou APIe, possivelmente, faça o download de alguns arquivos ou páginas da Web, que eu usaria curl. Especialmente se o protocolo fosse um dos muitos não suportados pelo wget.

Via: How to Geek

Veja Também:

Nenhum comentário