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
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix