El Linux curl
O comando pode fazer muito mais do que baixar arquivos. Descobrir o que curl
ele é capaz de, e quando você deve usá-lo em vez de wget
.
curl vs. wget: Qual é a diferença?
As pessoas muitas vezes lutam para identificar os pontos fortes relativos do wget
e curl
comandos. Os comandos têm alguma sobreposição funcional. Cada um pode recuperar arquivos de locais remotos, mas é aí que termina a semelhança.
wget
é um ferramenta fantástica para baixar conteúdo e arquivos. Você pode baixar arquivos, páginas da web e diretórios. Contém rotinas inteligentes para percorrer links em páginas da web e baixar conteúdo recursivamente em todo um portal da web. É incomparável como gerenciador de download de linha de comando.
curl
satisfazer uma necessidade completamente diferente. sim, pode recuperar arquivos, mas você não pode navegar recursivamente em um portal da web à procura de conteúdo para recuperar. Este curl
o que realmente faz é permitir que você interaja com sistemas remotos, fazendo solicitações a esses sistemas e recuperando e exibindo suas respostas. Essas respostas podem ser arquivos e conteúdo do site, mas eles também podem conter dados fornecidos através de um serviço web ou API como resultado do “pergunta” feito pelo aplicativo curl.
E curl
não limitado a sites. curl
suporta mais do que 20 protocolos, incluindo HTTP, HTTPS, SCP, SFTP y FTP. E possivelmente, devido ao seu manuseio superior de tubos Linux, curl
pode ser mais facilmente integrado com outros comandos e scripts.
O autor de curl
tem um site que descreva as diferenças que você vê Entre curl
e wget
.
Instalação do Curl
Dos computadores usados para pesquisar esta postagem, Fedora 31 e Manjaro 18.1.0 tinham curl
já instalado. 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 --version
opção faz curl
relatar sua versão. Ele também lista todos os protocolos que suporta.
curl - versão
Recuperar uma página da web
Se nós mirarmos curl
Em um site, vai pegar de volta para nós.
https curl://www.bbc.com
Mas sua ação padrão é baixá-lo na janela do terminal como código-fonte.
Ter cuidado: Se você não diz curl
quer algo armazenado como um arquivo, o fará para sempre jogue-o na janela do terminal. Se o arquivo que você está recuperando for um arquivo binário, o resultado pode ser imprevisível. O shell pode tentar interpretar alguns dos valores de byte no arquivo binário como caracteres de controle ou sequências de escape.
Salvar dados em arquivo
Vamos dizer ao curl para redirecionar a saída para um arquivo:
https curl://www.bbc.com > bbc.html
Desta vez, não vemos as informações recuperadas, enviado diretamente para o arquivo por nós. Porque não há saída de janela de terminal para exibir, curl
gera um conjunto de informações de progresso.
Você não fez isso no exemplo acima porque as informações de progresso estariam espalhadas por todo o código-fonte da página da web, pelo que curl
excluiu automaticamente.
Neste exemplo, 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.
- % Ele recebeu: A porcentagem e os valores reais dos dados recuperados até agora.
- % Xferd: A porcentagem e o frete real, se os dados estão carregando.
- Download de velocidade média: Velocidade média de download.
- Carga de velocidade média: Velocidade média de upload.
- Tempo total: A duração total estimada da transferência.
- Tempo usado: O tempo decorrido até agora para esta transferência.
- Tempo restante: O tempo estimado restante para a conclusão da transferência.
- Velocidade atual: A velocidade de transferência atual para esta transferência.
Porque redirecionamos a saída de curl
para um arquivo, agora temos um arquivo chamado “bbc.html”.
Ao clicar duas vezes naquele arquivo, seu navegador padrão será aberto para exibir a página da web recuperada.
Observe que o endereço na barra de endereço do navegador é um arquivo local neste computador, não é um portal remoto da web.
Nós não temos que redirecionar a saída para criar um arquivo. Podemos criar um arquivo usando o -o
(Saída) opção, e dizendo curl
para criar o arquivo. Aqui estamos usando o -o
e fornecendo o nome do arquivo que desejamos criar “bbc.html”.
curl -o bbc.html https://www.bbc.com
Usando uma barra de progresso para monitorar os downloads
Para que as informações de download baseadas em texto sejam substituídas por uma barra de progresso simples, usar el -#
(Barra de progresso) opção.
curl -x -o bbc.html https://www.bbc.com
Reiniciando um download interrompido
É fácil reiniciar um download que foi concluído ou interrompido. Vamos começar a baixar um arquivo considerável. Usaremos a última versão de suporte de longo prazo do Ubuntu 18.04. Estamos usando o --output
opção para especificar o nome do arquivo no qual desejamos salvá-lo: “ubuntu180403.iso”.
curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso
O download começa e avança até a conclusão.
Se interrompermos a descarga à força com Ctrl+C
, voltamos ao prompt de comando e o download é abandonado.
Para reiniciar o download, usar el -C
(continue) opção. Isso faz com que curl
para reiniciar o download em um ponto especificado ou compensar dentro do arquivo de destino. Se você usar um traço -
como deslocamento, curl
irá olhar para a parte já baixada do arquivo e determinar o deslocamento correto para usar para si mesmo.
curl -C - --saída ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso
O download é reiniciado. curl
relata o deslocamento em que está reinicializando.
Recuperando cabeçalhos HTTP
Com ele -I
(cabeça), só pode recuperar cabeçalhos HTTP. Isso é o mesmo que enviar o Comando HTTP HEAD para um servidor web.
curl -I www.twitter.com
Este comando apenas recupera informações; não baixa páginas da web ou arquivos.
Baixar de vários URLs
Usando xargs
podemos baixar vários URLs agora mesmo. Talvez queiramos baixar uma série de páginas da Web que compõem um único post ou tutorial.
copiar essas urls em um editor e salvá-las em um arquivo chamado “urls-para-download.txt”. Podemos usar xargs
para tratar o conteúdo de cada linha do arquivo de texto como um parâmetro que irá alimentar curl
, Sucessivamente.
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-create-a-usb-stick-on-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 devemos usar para ter xargs
passar essas URLs para curl
um ao mesmo tempo:
xargs -n 1 cacho -O < urls-para-download.txt
Observe que este comando usa o -O
(arquivo remoto) comando de saída, que usa um “O” letra maiúscula. Esta opção causa curl
para salvar o arquivo recuperado com o mesmo nome do arquivo no servidor remoto.
a -n 1
opção diz xargs
tratar cada linha do arquivo de texto como um único parâmetro.
Quando você executa o comando, você verá vários downloads começando e terminando, um após o outro.
Verificar no explorador de arquivos mostra que vários arquivos foram baixados. Cada um tem o nome que tinha no servidor remoto.
RELACIONADO: Como usar o comando xargs no Linux
Baixando arquivos de um servidor FTP
Usando curl
com um Protocolo de Transferência de Arquivos (FTP) é facil, mesmo se você tiver que se autenticar com um nome de usuário e senha. Para passar um nome de usuário e senha com curl
use o -u
(Nome do usuário) e escreva o nome de usuário, dois pontos ":"e a senha. Não coloque um espaço antes ou depois do cólon.
Este é um servidor FTP gratuito hospedado por Rebex. O site ftp teste tem um nome de usuário predefinido de “demonstração” e a senha é “senha”. Não use este tipo de nome de usuário e senha fracos em um servidor FTP de produção ou “real”.
curl -u demo:senha ftp://test.rebex.net
curl
ele percebe que o estamos apontando para um servidor FTP e retorna uma lista dos arquivos que estão presentes no servidor.
o único arquivo neste servidor é um arquivo “me ler.txt”, a partir de 403 bytes de comprimento. Vamos pegar de volta. Use o mesmo comando de agora, com nome de arquivo anexado:
curl -u demo:senha ftp://test.rebex.net/readme.txt
O arquivo é recuperado e curl
exibe seu conteúdo na janela do terminal.
Em quase todos os casos, será mais conveniente salvar o arquivo recuperado no disco, em vez de exibi-lo na janela do terminal. Mais uma vez, podemos usar o -O
(arquivo remoto) comando de saída para salvar o arquivo no disco, com o mesmo nome de arquivo que você tem no servidor remoto.
curl -O -u demo:senha ftp://test.rebex.net/readme.txt
O arquivo é recuperado e salvo no disco. Podemos usar ls
para verificar os detalhes do arquivo. Tem o mesmo nome do arquivo no servidor FTP e tem o mesmo comprimento, 403 bytes.
ls -hl readme.txt
RELACIONADO: Como usar o comando FTP no Linux
Envio de parâmetros para servidores remotos
Alguns servidores remotos aceitarão parâmetros em solicitações enviadas a eles. Os parâmetros podem ser usados para formatar os dados retornados, como um exemplo, ou podem ser usados para escolher os dados exatos que o usuário deseja recuperar. Muitas vezes é viável interagir com a web. interfaces de programação de aplicativos (API) usando curl
.
Como um exemplo simples, a ipify O portal web possui uma API que pode ser consultada para estabelecer seu endereço IP externo.
https curl://api.ipify.org
Adicionando o format
parâmetro para comando, com o valor de “json” podemos reordenar nosso endereço IP externo, mas desta vez os dados retornados serão codificados no Formato JSON.
https curl://api.ipify.org?format = json
Aqui está outro exemplo que usa uma API do Google. Retorna um objeto JSON que descreve um livro. O parâmetro que você precisa fornecer é o Número de livro padrão internacional (ISBN) número de um livro. Você pode encontrá-los na contracapa da maioria dos livros, geralmente sob um código de barras. O parâmetro que usaremos aqui é “0131103628”.
https curl://www.googleapis.com/books/v1/volumes?q = isbn:0131103628
Os dados retornados estão completos:
Às vezes curl, um veces wget
Se você quiser baixar conteúdo de um portal da web e fazer com que a estrutura da árvore do portal pesquise recursivamente por esse conteúdo, usaria wget
.
Se você quiser interagir com um servidor remoto ou API, e possivelmente baixar alguns arquivos ou páginas da web, usaria curl
. Especialmente se o protocolo fosse um dos muitos não suportados por wget
.
setTimeout(função(){
!função(f,b,e,v,n,t,s)
{E se(f.fbq)Retorna;n = f.fbq = função(){n.callMethod?
n.callMethod.apply(n,argumentos):n.queue.push(argumentos)};
E se(!f._fbq)f._fbq = n;n.push = n;n.loaded =!0;n.version = ’2.0′;
n.queue =[];t = b.createElement(e);t.async =!0;
t.src = v;s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, documento,'roteiro',
‘Https://connect.facebook.net/en_US/fbevents.js ’);
fbq('iniciar', ‘335401813750447’);
fbq('acompanhar', ‘PageView’);
},3000);