logo

Comando Curl no Linux com exemplos

O comando curl do Linux é usado para baixar ou fazer upload de dados para um servidor por meio de protocolos suportados, como HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, etc.

A transferência de dados de um local para outro é uma das tarefas vitais e mais utilizadas de um sistema computacional. No entanto, existem muitas ferramentas GUI disponíveis para transferência de dados. Mas, ao trabalhar na linha de comando, fica um pouco complicado. O utilitário curl nos permite transferir dados por meio da linha de comando.

Curl é uma ferramenta de linha de comando para obter e enviar dados como arquivos com sintaxe de URL. Ele suporta todos os protocolos suportados pelo libcurl porque usa libcurl. Curl fornece suporte para HTTPS e implementa verificação de certificado SSL quando um protocolo seguro é mencionado por padrão, como HTTPS. Curl trará o certificado do servidor remoto e verificará o certificado CA para evitar que a validade do servidor remoto garanta que o servidor remoto seja aquele que ele solicita quando o curl se vincula a um servidor remoto por HTTPS.

Existem muitas opções para definir um certificado CA, como --capath e --cacert . A opção, ou seja, --cacert, pode ser utilizada para especificar a localização do arquivo do armazenamento de certificados CA. Se um arquivo de certificado CA não estiver disponível na plataforma Windows, o curl procurará o nome do arquivo de certificado CA 'curl-ca-bundle.crt' na sequência abaixo:

  • Diretório no qual o programa curl está presente.
  • Diretório de trabalho atual.
  • Diretório do sistema (Windows).
  • Diretório (Windows).
  • Os diretórios são mencionados nas variáveis ​​de ambiente %PATH%.

Curl exibirá uma mensagem de erro quando o servidor remoto estiver utilizando um certificado autoassinado ou quando o certificado do servidor remoto não estiver assinado por meio de uma CA mencionada no arquivo de certificado da CA. A opção --insecure ou -k pode ser utilizada para ignorar a verificação do certificado. O certificado CA remoto pode, alternativamente, ser incluído no arquivo de armazenamento de certificados CA se o servidor remoto for válido.

Curl fornece uma série de truques úteis, como currículo de transferência de arquivos, cookies, conexões SSL, postagem HTTP, upload de FTP, autenticação de usuário, suporte de proxy e muito mais. Curl é mecanizado pela libcurl para todos os aspectos relacionados à transferência.

O que é libcurl?

libcurl é uma biblioteca de transferência de URL gratuita do lado do cliente. Suporta SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, túnel de proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT e cookies. A biblioteca também suporta autenticação de usuário mais senha, proxies, LDAPS, certificados HTTPS, upload baseado em formulário HTTP, upload de FTP, currículo de transferência de arquivo, TFTP, Telnet, SFTP e esquema de URL de arquivo.

libcurl é compacto. Ele cria e funciona de forma idêntica em diversas plataformas, incluindo Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS e AIX.

A biblioteca libcurl é compatível com IPv6, thread-safe e gratuita. As vinculações também estão disponíveis para mais de 50 linguagens, incluindo Python, PHP, Java e C/C++.
A biblioteca libcurl suporta SChannel, gskit no IBM i, NSS, mbed TLS, GnuTLS no Windows, Secure Trasport no iOS e macOS, TLS/SSL através de OpenSSL, rustls, BearSSL, wolfSSL, AmiSSL, libressl e Boringssl.

Sintaxe:

A sintaxe básica para usar curl é a seguinte:

 curl [options] [URL...] 

Da sintaxe acima,

URL:

A sintaxe da URL é uma URL geral dependente de protocolo. Podemos especificar vários URLs da seguinte forma:

 http://site.{one,two,three}.com 

Opções:

O comando curl oferece suporte às seguintes opções de linha de comando:

--abstract-unix-socket : Ele é usado para conectar via soquete de domínio Unix abstrato em vez de uma rede.

--anyauth: É usado para comandar curl para autenticar o método por si só para usar o método mais seguro. Este utilitário é um utilitário opcional '--basic, --digest, --ntlm e negociate', que é usado para definir um método de autenticação específico.

-a, --append: É usado para fazer upload de arquivos. Ele anexa o arquivo em vez de sobrescrevê-lo. Se o arquivo fornecido não existir no servidor, ele criará um.

funções em c

--básico: Especifica o uso da autenticação básica HTTP. É a opção padrão do comando curl. É útil para substituir as configurações anteriores.

--cacert: É especificado para usar o arquivo de certificado específico para verificar o par. Os arquivos podem ter vários certificados CA. O formato padrão dos certificados é PEM, portanto, todos os certificados devem estar nele.

--capath: É especificado para usar o diretório específico para verificar o par. Podemos especificar vários caminhos separando-os por dois pontos (:), como 'caminho: caminho2: caminho3'. O formato padrão dos certificados é PEM, portanto, todos os certificados devem estar nele.

--cert-status: É usado para verificar o status do certificado do servidor. Ele usa solicitação de status de certificado ou TLS de grampeamento OCSP.

--cert-type : Ele especifica o tipo de certificado curl fornecido. Esses certificados podem estar nos formatos PEM, DER e ENG. O valor padrão é PEM. Se for especificado várias vezes, o último valor será obtido pelo curl.

-E, --cert : É especificado para usar o arquivo de certificado do cliente ao obter um arquivo por meio de qualquer protocolo baseado em SSL, como HTTPS, FTPS, etc.

--cifras: É usado para selecionar as cifras a serem usadas na conexão.

--comprimido-ssh: É usado para habilitar a compactação SSH integrada. Esta opção será considerada uma solicitação do servidor, portanto o servidor poderá aceitá-la ou não.

--comprimido: Ele é usado para solicitar uma resposta compactada usando os algoritmos curl e salva o documento descompactado. Esta opção enviará um relatório para codificação curl não suportada.

-K, --config: É usado para descrever um arquivo de texto para leitura de argumentos curl. O curl usará os argumentos de linha de comando do arquivo de texto.

--connect-tempo limite: É usado para especificar o tempo máximo em segundos para o tempo limite da conexão curl.

--conectar a : É usado para criar uma solicitação para um determinado par de host e porta; caso contrário, ele se conectará ao próximo par. Esta opção é uma ferramenta útil para fazer solicitações diretas em um servidor específico.

-C, --continue-at : É usado para continuar ou retomar uma transferência de arquivo anterior em um determinado deslocamento.

-c, --cookie-jar: É usado para especificar um arquivo específico no qual queremos gravar todos os cookies após uma operação bem-sucedida.

-b, --cookie: É usado para encaminhar dados para o servidor HTTP no cabeçalho Cookie.

--create-dirs: É usado em conjunto com o '-o? opção, ele criará a hierarquia de diretório local necessária.

--crlf (FTP-SMTP): É usado para converter LF em CRLF no upload. É uma ferramenta útil para MVS (OS/390).

--crlfile: É usado para especificar (em formato PEM) uma lista de certificados revogados.

--dados-ascii: É um apelido para o ?-d? opção.

--delegação: É usado para definir LEVEL para reconhecer ao servidor o que ele pode delegar quando se trata de credenciais do usuário.

--digerir: É usado para ativar a autenticação HTTP Digest.

-q, --desabilitar: Se usado como primeiro argumento, irá ignorar o arquivo de configuração curlrc.

--dns-interface : É usado para confirmar o servidor para enviar as solicitações DNS de saída.

--dns-servidores: É usado para especificar os servidores DNS em vez dos servidores padrão.

-f, --falha: Ele é usado para fazer com que o curl falhe silenciosamente em caso de erros do servidor.

-F, --forma: É usado para emular um formulário preenchido enviado pelo usuário.

-P, --ftp-porta: É usado para reverter as funções de ouvinte padrão ao conectar-se com FTP.

--ftp-ssl-ccc-mode: É usado para definir o modo CCC.

-G, --obter: É usado para especificar dados com ?-d? opção a ser usada em uma solicitação HTTP GET em vez de uma solicitação POST.

-h, --ajuda: É utilizado para mostrar o manual de ajuda com uma breve descrição das opções de uso e suporte.

-0, --http1.0: É especificado para usar o HTTP versão 1.0.

--ignore-content-length: É usado para ignorar o cabeçalho Content-Length.

-eu, --incluir: É usado para incluir os cabeçalhos de respostas HTTP.

-4, --ipv4: É usado para resolver nomes para endereços Ipv4.

-6, --ipv6: É usado para resolver nomes para endereços Ipv6.

Protocolos de curl

Curl oferece suporte a vários protocolos:

    DITO:Ele nos permite procurar palavras apenas com dicionários.FTP(S):Curl oferece suporte ao protocolo FTP usando várias alavancas e ajustes. Com ou sem TLS.ARQUIVO:Isso nos permite escrever e ler o arquivo local. Curl não permite acessar remotamente file://URL, mas funcionará quando ativo no Microsoft Windows com a abordagem UNC nativa.GOFER (S):Ele recupera arquivos.HTTP(S):Curl oferece suporte a HTTP usando inúmeras variações e opções. Ele pode falar as versões HTTP 0.9, 1.0, 1.1, 2 e 3, dependendo da linha de comando precisa e das opções de construção.IMAP(S):Curl baixa e-mails para nós com o protocolo de leitura de e-mail. Com ou sem TLS.LDAP(S):Curl pode implementar a pesquisa de diretório para nós com ou sem o uso de TLS.MQTT:Curl suporta a versão 3 do MQTT. Baixar no MQTT é o mesmo que 'se inscrever' para qualquer tópico, e postar/enviar é o mesmo que 'publicar' sobre qualquer assunto. Por TLS, o MQTT não é compatível.POP3(S):O download através de um servidor pop3 representa o recebimento de e-mails sem ou com TLS.RTMP(S):O RTMP ou Realtime Messaging Protocol é usado principalmente para streaming de mídia de servidor.RTSP:Curl suporta downloads 1.0 de RTSP.SCP:Curl suporta a versão de transferência de dois scp do SCP.SFTP:Curl oferece suporte a SFTP na versão 2 do SSH.PME (S):Curl suporta a versão 1 do SMB para download e upload.SMTP(S):Carregar conteúdo para qualquer servidor SMTP significa transferir um email sem ou com TLS.TELNET:Informar ao curl para trazer uma URL telnet inicia uma sessão interativa na qual ele transfere o que lê pelo stdin e resulta no que o servidor transfere.TFTP:Curl pode implementar uploads e downloads TFTP.

Instalação do comando curl

O comando curl vem com a maioria dos Linux distribuições. Mas, se o sistema não carregar o curl por padrão. Você precisa instalá-lo manualmente. Para instalar o curl, execute os seguintes comandos:

Atualize o sistema executando os seguintes comandos:

 sudo apt update sudo apt upgrade 

Agora, instale o utilitário curl executando o comando abaixo:

 sudo apt install curl 

Verifique a instalação executando o comando abaixo:

 curl -version 

O comando acima exibirá a versão instalada do comando curl.

Busque o conteúdo do URL especificado

Para buscar o conteúdo de qualquer URL específico, execute o comando curl, seguido da URL. Considere o comando abaixo:

 curl https://www.javatpoint.com/linux-tutorial 

O comando acima irá buscar os dados da página especificada. Considere o snap abaixo da saída:

Comando Curl do Linux

A partir da saída acima, podemos ver que os dados da página de um determinado URL estão sendo buscados. Para interromper a execução, pressione as teclas CTRL+C.

Salvar dados em um arquivo específico

Para salvar os dados em um arquivo específico, passe a opção '-o' seguida do diretório, nome do arquivo e URL da seguinte forma:

 curl -o / 

Considere o comando abaixo:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

O comando acima salvará os dados da página no arquivo 'linux.html' no diretório '/home/javatpoint/Documents/'. Considere a saída abaixo:

Comando Curl do Linux

A partir do comando acima, podemos ver a quantidade total de dados baixados, dados recebidos, tempo médio e algumas outras estatísticas sobre os dados.

Para verificar os dados baixados, abra o arquivo executando o comando cat

 cd Documents cat linux.html 

Considere o instantâneo de saída abaixo:

Comando Curl do Linux

Baixe um arquivo da web

Um dos usos interessantes e fascinantes do curl é que podemos baixar um arquivo da web. Para baixar um arquivo da web, copie o link de download e cole-o com o comando curl. Também podemos passar outros argumentos para torná-lo mais específico. Por exemplo, baixe a versão mais recente do Ubuntu, copie o Link para Download do ubuntu em seu site oficial e cole-o com o comando curl da seguinte forma:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

O comando acima irá baixar o Ubuntu 20.04 para o diretório especificado. Forneça a extensão de arquivo adequada; caso contrário, o arquivo será baixado em um formato diferente. Considere a saída abaixo:

Comando Curl do Linux

A partir da saída acima, o arquivo ubuntu.iso está sendo baixado. Podemos ver o tempo de download, tamanho do arquivo, velocidade de download e outras estatísticas. Para interromper a execução, pressione a qualquer momento as teclas CTRL+D.

Retomar os downloads interrompidos

Pode haver uma chance de os downloads serem interrompidos por algum motivo. Podemos retomar os downloads usando o comando curl. Para retomar o arquivo interrompido, passe a opção '-C' com o comando curl da seguinte forma:

 curl -C 

O comando acima irá retomar o download do URL especificado.

Baixe vários arquivos

Para baixar os vários arquivos, especifique os vários URLs separados por espaço da seguinte forma:

 curl -O 

O comando acima irá baixar os dados de ambos os URLs, respectivamente.

Consultar cabeçalhos HTTP

Os cabeçalhos HTTP contêm informações adicionais; permite que o servidor web baixe essas informações. Para consultar os cabeçalhos HTTP de um site, execute o comando com a opção '-I' da seguinte forma:

 curl -I www.javatpoint.com 

O comando acima produzirá a saída abaixo:

Comando Curl do Linux