fbpx Certificação Linux: Comando curl no Linux (baixar arquivos) [Guia Básico]

Blog

Comando curl no Linux (baixar arquivos) [Guia Básico]

📅 06/12/2021 ⏱ 3 min ✍️ Uira Ribeiro
Linuxcomandos
Comando curl no Linux (baixar arquivos) [Guia Básico]

O comando curl no Linux pode ser utilizado para baixar arquivos, como também conversar com APIs Web diretamente do shell do Linux. É um comando muito versátil para os programadores testarem acesso às API's de softwares e aplicativos hospedados na web.

A sintaxe básica do curl é:

$ curl URL

Exemplo:

$ curl https://google.com<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 Moved</TITLE></HEAD><BODY><H1>301 Moved</H1>The document has moved<A HREF="https://www.google.com/">here</A>.</BODY></HTML>

Desta forma, ele envia uma requisição GET para o servidor informado, na página informada. É possível passar parâmetros GET diretamente na URL utilizando os separadores "?" e "&".

$ curl http://api.servidor.com/myapi/2.5/tempo?id=217

É necessário quando for passar mais de um parâmetro na URL, especialmente utilizando o símbolo "&", usar a aspas simples na URL:

$ curl 'http://api.servidor.com/myapi/2.5/tempo?id=217&user=uira'

O curl permite informar um timeout em segundos pelo qual ele irá esperar por uma resposta do servidor, com a opção "-m":

$ curl -m 3  'http://api.servidor.com/myapi/2.5/tempo?id=2172797&user=uira'

É possível fazer uma chamada POST utilizando o curl, com a opção "-X":

$ curl -X POST  'http://api.servidor.com/myapi/2.5/tempo'

A opção -X permite os métodos GET (padrão), POST e PUT.

Para enviar dados na requisição POST, deve-se usar a opção "-d". Os dados precisam estar no formato URL encoded.

$ curl -d 'id=217&user=uira' -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Pode-se também separar os dados em múltiplas opções "-d":

$ curl -d id=217  -d user=uira  -X POST 'http://api.servidor.com/myapi/2.5/tempo'

É possível também especificar um arquivo que contenha os dados para envio via POST, utilizando a opção "-d" com "@":

$ curl -d @arquivo -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Se o site exigir uma autenticação HTTP simples, a opção "-u" pode enviar um usuário e senha:

$ curl -u uira@senha -d id=217  -d user=uira  -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Para enviar um arquivo JSON, é necessário especificar o cabeçalho HTTP, com a opção "-H":

$ curl -H "Accept: application/json" -d @arquivojson  -X PUT 'http://api.servidor.com/myapi/2.5/tempo'

A opção "-i" permite ver a resposta HTTP do servidor:

$ curl -i 'https://api.openweathermap.org/data/2.5/weather?q=Belo%20Horizonte,PT&appid=9908ae7bbb3c530f54efdec77ac3ccde'
HTTP/1.1 200 OK
Server: openresty
Date: Tue, 12 May 2020 22:13:25 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 473
Connection: keep-alive
X-Cache-Key: /data/2.5/weather?q=belo%20horizonte,pt
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST

{"coord":{"lon":-7.42,"lat":39.31},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"base":"stations","main":{"temp":286.83,"feels_like":285.15,"temp_min":286.48,"temp_max":288.15,"pressure":1008,"humidity":87},"visibility":10000,"wind":{"speed":3.1,"deg":220},"clouds":{"all":20},"dt":1589321586,"sys":{"type":1,"id":6402,"country":"PT","sunrise":1589260722,"sunset":1589312008},"timezone":3600,"id":2270968,"name":"Belo Horizonte","cod":200}

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp