curl é um comando/biblioteca (libcurl) disponível na maioria dos sistemas baseado em Unix. Ele é usado como abreviação para “Client URL”. Ele é utilizado para diversas finalidades como: navegação, inserção de dados via web, download, transferência de dados e entre outros. Ele suporta diversos protocolos.
Para instalar o curl você pode usar o gerenciador de pacotes da sua distro, mas antes de instalar verifique se o mesmo já está instalado com o comando: which curl
, exemplos:
emerge curl # Para Gentoo, Funtoo e similares
sudo apt install curl # No Debian, Ubuntu, Linux Mint e similares
sudo pacman -S curl # Arch Linux, Manjaro e similares
sudo yum install curl # Red Hat, CentOS e Fedora (prefira o dnf)
pkg install curl # FreeBSD e sistema relativos
pkg_add curl # OpenBSD
pkgin install curl # NetBSD
Após a instalação, verifique se está tudo ok, por exemplo, vendo a versão: curl --version
curl -F "mail=ninguem@nada.com" -F "msg=valeu" http://dandosopa.org/ #OK
curl -X POST -F "mail=ninguem@nada.com" -F "msg=valeu" http://dandosopa.org/ #OK
# cat data.txt #mail=nada@tudo.com&msg=Sei nao #OK
curl --data "mail=querocomer@suasopa.com&msg=Delícia" http://dandosopa.org/ #OK
curl -d "@data.txt" -X POST http://dandosopa.org/ #OK
Nesse caso precisamos informar na URL o caminho do arquivo que será responsável pelo recebimento do arquivo, nesse caso eu sei que é upload.php
, mas ele poderia ficar na raíz do host, lembrando que, como eu havia dito, ele redireciona para ‘m/’ sem alteração de URL .
curl -i -X POST -H "Content-Type: multipart/form-data" -F "data=@DICAS_COMANDOS" http://dandosopa.org/upload.php #OK
curl -F "data=@DSC03666.JPG" http://dandosopa.org/upload.php >/dev/null 2>/dev/null #OK
-O
ou --remote-name
indica que o arquivo origem é binário , logo se você não passá-lo o curl não conseguirá efetuar o download.curl -O dandosopa.org/downloads/distro.iso
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 841M 100 841M 0 0 46.0M 0 0:00:18 0:00:18 --:--:-- 44.0M
Se você quiser que não mostre os dados, use o parâmetro
--silent
ou-s
:curl --silent dandosopa.org/downloads/distro.iso
Se você errar o nome do arquivo, o curl irá baixar o arquivo 404 , logo é sempre bom você conferir o tamanho do arquivo
du -lhs distro.iso
, se estiver incorreto veja qual foi a resposta do servidor:cat distro.iso
(pode ser que seja erro do servidor se não for 404, por exemplo, 301) , por isso o ideal mesmo é fazer uma HASH do arquivo pós baixado
Observação: Ainda não há nenhum parâmetro que salve sem sobrescrever o arquivo se ele existir, logo você precisa criar uma solução na shell, exemplo:
[ ! -f data.txt ] && curl -O dandosopa.org/downloads/data.txt || echo Arquivo já existe
curl dandosopa.org/downloads/distro.iso -o refisefuqui.iso
Não use em conjunto com o
-O
, caso contrário o curl irá priorizar a ordem que o parâmetro foi informado na linha de comando.
curl -C - -O http://dandosopa.org/downloads/distro.iso
curl -O http://yoursite.com/refisefuqui.iso -O http://dandosopa.org/downloads/data.txt
cat urls.txt
dandosopa.org/downloads/distro.iso
dandosopa.org/downloads/data.txt
xargs -n 1 curl -O < urls.txt
curl --limit-rate 100K http://dandosopa.org/downloads/distro.iso -O
curl -# -O dandosopa.org/downloads/distro.iso
curl -I terminalroot.com.br
Nem todos os sites permitem essa consulta.
curl https://gnu.terminalroot.com.br/ip.php
# Exemplo Windows 10 Edge:
curl http://localhost --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134"
curl -u usuário:senha -O http://dandosopa.org/m/secret/meus-arquivos-secretos.tar.gz
Abraços!