Obter cURLy: 10 coisas úteis que você pode fazer com cURL

O Linux Terminal tem muitas maneiras de interagir e manipular dados, e talvez a melhor maneira de fazer isso seja com o cURL. Estas 10 dicas e truques mostram o quão poderoso ele é.

O Linux Terminal tem muitas maneiras de interagir e manipular dados, e talvez a melhor maneira de fazer isso seja com o cURL.  Estas 10 dicas e truques mostram o quão poderoso ele é.
Propaganda

Quando começamos a aprender sobre ferramentas de linha de comando, tendemos a vê-las como de propósito único. Você é ensinado que o cat imprime o conteúdo do arquivo, ls lista todos os itens em um diretório e du mostra o uso do espaço em disco. No entanto, muitas ferramentas de linha de comando têm dezenas de opções, todas bem descritas em seus arquivos de man . Alguns deles podem fazer maravilhas quando combinados com outros comandos.

É claro que não é razoável esperar que alguém se lembre de todas as opções. Com isso em mente, é bom atualizar ocasionalmente nosso conhecimento dos comandos do Linux Um AZ de Linux - 40 Comandos Essenciais que Você Precisa Saber Um AZ de Linux - 40 Comandos Essenciais que Você Deve Saber O Linux é a terceira roda ignorada para Windows e Mac. Sim, na última década, o sistema operacional de código aberto ganhou muita tração, mas ainda está muito longe de ser considerado ... Leia mais, porque você pode descobrir novos usos para eles.

curl-commands-introduction

Desta vez, estamos nos concentrando no cURL, uma ferramenta para transferir dados através de vários protocolos de Internet, como HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP e muito mais.

Em termos simplificados, o cURL realiza vários pedidos de um cliente para um servidor, estabelecendo uma conexão entre eles por meio de um protocolo específico e seus métodos associados. Por exemplo, como um cliente HTTP, o cURL pode enviar uma solicitação para visualizar ou fazer download de conteúdo (método de solicitação GET) ou para postar conteúdo por meio de um formulário em um site (método de solicitação POST). Muitos aplicativos e serviços da Web permitem que o cURL interaja com suas APIs (Application Programming Interface).

Porque sua funcionalidade se sobrepõe a uma extensão, cURL e wget Dominando o Wget e aprendendo alguns truques de download puro Dominando o Wget e aprendendo alguns truques de download arrumado Às vezes, não é suficiente salvar um site localmente a partir do seu navegador. Às vezes você precisa de um pouco mais de energia. Para isso, há uma pequena ferramenta de linha de comando conhecida como Wget. Wget is ... Read More são freqüentemente comparados entre si. Ambas as ferramentas podem baixar o conteúdo da Internet, mas o wget oferece suporte a downloads recursivos, scraping da web e geralmente parece mais simples de usar. Se você quiser apenas baixar arquivos do terminal Download de vídeos da Web com a linha de comando usando o Movgrab [Linux] Baixe vídeos da Web com a linha de comando usando o Movgrab [Linux] Use a linha de comando para baixar rapidamente vídeos do YouTube, Vimeo, Ted, Discovery e mais de 40 outros sites usando um programa simples. Chama-se MovGrab e é um ótimo programa gratuito para Linux. Nós mostramos ... Leia Mais, wget é provavelmente uma escolha melhor.

Por outro lado, se você precisa de métodos avançados de autenticação HTTP, e quer fazer o upload de arquivos, bem como baixá-los, vale a pena aprender como cURL. Além disso, o wget suporta apenas HTTP (S) e FTP, enquanto o cURL abrange uma ampla gama de protocolos. Isso significa que cURL pode fazer coisas mais legais - e aqui estão dez exemplos para provar isso.

1. Obter o relatório do tempo

Se alguém lhe dissesse para verificar o tempo no terminal, você esperaria ver alguns números chatos. Não com este comando.

curl http://wttr.in/LOCATION

curl-commands-weather

As informações são fornecidas por um aplicativo CLI chamado wikipedia, mas se você não quiser instalá-lo, o cURL pode buscar a previsão do seu frontend web wttr.in. Tudo o que precisa é o local para o qual você deseja a previsão. Basta digitar o nome de uma cidade, seu código de aeroporto ou seu endereço IP atual. Um novo recurso mostra as informações sobre as fases da lua, se você digitar:

curl wttr.in/Moon

curl-commands-moonphase

2. Faça o download de arquivos e continue os downloads

O download de arquivos é algo que normalmente fazemos no navegador. Às vezes você vai querer usar um gerenciador de downloads Obter um gerenciador de downloads gratuito para acelerar seus downloads Obter um gerenciador de downloads gratuito para acelerar seus downloads Seu navegador não faz um bom trabalho de gerenciamento de downloads grandes. Se você está cansado de velocidades de download lentas e falhas, tente um gerenciador de downloads. Recomendamos 9 ferramentas gratuitas para gerenciar seus downloads. Consulte Mais informação ; por exemplo, ao baixar vários arquivos de uma vez ou quando você deseja pausar os downloads. Embora cURL não seja uma escolha popular para downloads simultâneos (o wget é recomendado), você ainda pode usá-lo para essa finalidade combinando suas opções poderosas (switches). Primeiro você precisará de um link direto para o arquivo. Neste exemplo, usaremos um PDF da revista Linux Voice.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

O O maiúscula (-O) faz com que o cURL salve o arquivo com o nome do arquivo padrão (geralmente aquele do próprio link). Se você quisesse salvá-lo com um nome diferente, você usaria o minúsculo seguido pelo novo nome:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Por padrão, os arquivos são salvos no diretório atual (verifique com o comando pwd ). Para salvá-los em outro lugar, forneça o caminho após a opção -o. A opção -C - permite que o cURL retome o download. Você faria uma pausa pressionando Ctrl + C no terminal e continuaria executando o mesmo comando de download novamente:

curl-commands-resume-download

O cURL exibe o progresso do download em um formato semelhante a uma tabela, com colunas contendo informações sobre a velocidade de download, o tamanho total do arquivo, o tempo decorrido e muito mais. Se você não gostar disso, você pode optar por uma barra de progresso mais simples adicionando - # ou –progress-bar ao seu comando cURL.

Para baixar vários arquivos de uma vez, basta listar os links um após o outro:

curl -O file1.txt -O file2.pdf -O file3.zip

Com a ajuda de outras ferramentas de linha de comando, podemos baixar em lote todas as imagens PNG e JPG de um blog do Tumblr:

curl http://concept-art.tumblr.com/ | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

Nesse caso, cut e grep coletam informações sobre nomes de arquivos e os formatam de forma que somente arquivos com extensões especificadas sejam exibidos. Se você executar o comando sem o último canal:

curl http://concept-art.tumblr.com/ | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2

você só verá uma lista de arquivos que atendem aos nossos critérios, mas eles não serão realmente baixados. O cURL pode obter uma lista de imagens de um intervalo de páginas, desde que o blog use paginação padrão:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2

Você pode modificar o intervalo alterando os números entre colchetes. Novamente, esse comando listaria apenas as imagens; para baixá-los, execute o comando completo no diretório onde deseja salvar as imagens:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src="[^"]*.[png-jpg]"' | cut -d\" -f2 | while read l; do curl "$l" -o "${l##*/}"; done

Se você é bem versado em expressões regulares RegExr: Ferramenta de Teste de Expressão Regular Baseada na Web RegExr: Ferramenta de Teste de Expressão Regular Baseada na Web Leia mais, você pode melhorar a aparência e a eficiência deste comando e compartilhar o resultado nos comentários.

3. Gerenciar arquivos em um servidor FTP

Não ouvimos muito sobre o FTP atualmente, mas isso não significa que seja obsoleto. De fato, muitos projetos de código aberto e distribuições Linux compartilham seus softwares em servidores FTP. Desde FTP é suportado por cURL, você pode usá-lo como um simples cliente FTP FileZilla - Por que este cliente FTP triunfa sobre seus concorrentes FileZilla - Por que este cliente FTP triunfa sobre seus concorrentes Aplicativos portáteis torná-lo independente. Armazenado em um pen drive USB ou na sua pasta Dropbox, todas as suas ferramentas essenciais estarão ao seu alcance onde quer que você vá. Você não precisará instalar nada também. Leia mais para carregar e baixar arquivos. Você pode procurar os arquivos em um servidor FTP acessando os diretórios:

curl ftp://ftp.debian.org/debian/

Para inserir um subdiretório, digite seu nome seguido por uma barra (/).

curl-commands-ftp-browse

O download de arquivos é semelhante aos downloads HTTP descritos na seção anterior. Você pode usar -o ou -O e adicionar -C - se quiser pausar os downloads.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Embora o cURL não suporte downloads recursivos (lembre-se, o wget o faz!), Ele ainda pode baixar vários arquivos de uma só vez. A única condição é que os nomes dos arquivos sigam um padrão. Por exemplo, poderíamos fazer o download de um servidor de hospedagem de papel de parede em que os papéis de parede são todos denominados “wallpaperNUMBER”:

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg"

Alguns servidores FTP exigem autenticação antes que você possa baixar arquivos. O cURL permite que você faça o login com a opção -u (usuário):

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Você também pode enviar arquivos para um servidor FTP com a opção -T (transferência):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Aqui você também pode definir vários arquivos como um intervalo. Esse recurso é às vezes chamado de "globbing". Se os nomes dos arquivos não seguirem um padrão, apenas os liste entre chaves ( -T "{file1.txt, image27.jpg"}" ). Por outro lado, se eles tiverem nomes semelhantes, aplique a mesma lógica do exemplo de download do Tumblr e use colchetes ( -T "photo[1-50].jpg"" ). Certifique-se de fornecer o caminho completo para os arquivos, se eles não estiverem em seu diretório atual.

4. Verifique se um site está inativo

Todos nós já estivemos lá. Um site que você absolutamente precisa de repente pára de funcionar. Então o Facebook não carregará. Confrontado com um verdadeiro problema do primeiro mundo, o que você faz?

Você pode pesquisar no Google, pedir a um amigo para testá-lo para você ou usar um desses sites de exibição única que informa se um site está inativo. Ou você pode simplesmente ligar o terminal e rodar o cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

A maiúscula que eu alterno (-I) verifica o cabeçalho HTTP de uma página da web, e a opção -L (location) é adicionada para fazer os redirecionamentos cURL seguir. Isso significa que você não precisa digitar o URL completo do Facebook; Basta escrever facebook.com e cURL vai cuidar do resto graças a -L. Se houver algum redirecionamento, ele será exibido com seu próprio status HTTP.

curl-commands-http-status

A mensagem em que estamos interessados ​​é "200 OK", o que significa que tudo está bem com o site. Se estiver realmente baixo, você verá algo assim:

curl-commands-http-status-down

Os códigos de status HTTP são tão informativos quanto o seu entendimento sobre eles permite. Esse método não é totalmente confiável, porque um site pode retornar um código de status indicando uma solicitação processada com êxito, mas estará vazia quando você a abrir no navegador. Ainda assim, na maioria dos casos, isso deve corresponder à situação real, e deixar você saber o que está acontecendo - ou abaixo.

5. Expandir URLs abreviados

URLs abreviados não são inerentemente ruins. Sem eles, seria difícil compartilhar links no Twitter Como vencer o limite de 140 caracteres do Twitter Como vencer o limite de 140 caracteres do Twitter O limite de 140 caracteres do Twitter pode ser um incômodo. Felizmente, existem maneiras de contornar isso. Leia mais e outras redes sociais de caráter limitado. Alguns serviços de encurtamento de URL Experimente 10 diferentes encurtadores de URL que lhe dão benefícios adicionais Tente 10 diferentes encurtadores de URL que lhe proporcionem benefícios adicionais De maneira diferente, como você pode encurtar um localizador uniforme de recursos? Bem, o sistema de encurtamento é praticamente um trabalho comum, mas o truque parece estar nos extras que vêm com o serviço de encurtamento .... Leia mais ofereça análises úteis também. Mas há sempre o risco de alguém estar tentando ocultar conteúdo malicioso por trás de uma URL encurtada, ou que um troll esteja mascarando um Rickroll Além da paródia: 5 piadas na Internet que cresceram em algo maior além da paródia: 5 piadas na Internet que cresceram em algo maior Leia mais (ou algo muito, muito pior). Se você suspeitar de um URL abreviado por qualquer motivo, o cURL pode ajudá-lo a expandi-lo e descobrir exatamente para onde ele leva:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

ou

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

curl-comandos-expand

Você pode combinar cURL com grep ou sed ; A principal diferença está na formatação. Sed é uma daquelas ferramentas que todo usuário de Linux deve saber. Todo Linux Geek precisa saber Sed e Awk. Aqui está o porquê ... Todo nerd do Linux precisa saber Sed e Awk. Aqui está o porquê ... Dois dos utilitários Linux menos apreciados criminalmente são o reconhecidamente arcano Sed e Awk. Mas o que são eles? Como eles são usados? E como eles facilitam o processamento de texto? Leia mais e complementa o cURL neste e em alguns outros casos de uso. Não nos esqueçamos de que o cURL pode baixar arquivos de um URL abreviado (desde que o URL realmente aponte para um arquivo):

curl -L -o filename.txt http://short.url

A sintaxe é a mesma de outros downloads cURL, e a opção -L cuida do redirecionamento de uma URL abreviada para a original.

6. Mostre sua apreciação pela arte ASCII

Evidentemente, isso não é particularmente útil, mas parece legal. Com a ajuda do pv, um utilitário para monitorar o progresso dos dados, o cURL pode exibir animações ASCII no terminal.

curl -s http://artscene.textfiles\.com/vt100/wineglas.vt | pv -L9600 -q

As opções -s e -q mantêm os dois comandos no modo silencioso (silencioso). A opção -L aqui se refere ao comando pv e permite modificar a taxa de transferência de dados em bytes por segundo. Em outras palavras, se a animação está se movendo muito rápido ou muito devagar, tente jogar com esse número. Além das animações, o cURL pode exibir arte ASCII simples e estática:

curl-commands-asciiart

A Web tem muitos sites com todos os tipos de arte ASCII: desde peças incrivelmente detalhadas e de alta qualidade até material estranho, bobo e até NSFW. Essa técnica de arte digital remonta à década de 1960 e hoje faz parte da cultura e da história da Internet 7 Tendências da Internet antigas que afetam a Web hoje 7 Tendências antigas da Internet que afetam a Web hoje A Web de hoje pode não parecer ou ser a web dos anos 90, mas você ficaria surpreso com o quanto disso é realmente o mesmo quando você mergulha abaixo da superfície. Leia mais, mantido vivo em inúmeras coleções e ferramentas que permitem converter texto e imagens para arte ASCII ASCII arte: imagem e texto para ASCII Converter ASCII arte: imagem e texto para conversor ASCII Leia mais. Você pode usá-lo para decorar o seu terminal ou para brincar com seus amigos - o que flutua no seu barco.

7. Experimente com mídias sociais

Usar as mídias sociais do terminal não é novidade - já mostramos a você os clientes Twitter de linha de comando para Linux 5 Slimline e Linha de Comando Clientes do Twitter para Ubuntu 5 Slimline e Linha de Comando Clientes do Twitter para Ubuntu Por um tempo, a comunidade Linux tem sido desesperadamente clamando por um bom cliente no Twitter. Decidimos pesquisar o atual cenário de clientes do Twitter do Linux, procurando aplicativos leves e úteis, com alguns resultados interessantes. Consulte Mais informação . Embora você provavelmente não mude para cURL como sua ferramenta de socialização online, é bom saber que você pode postar no Facebook com ele, conforme descrito aqui Como postar no Facebook a partir da linha de comando Agora que o FBCMD está inoperante Como postar no Facebook Linha de comando agora que o FBCMD está morto Imagine abrir uma janela de comando em seu PC, digitando um comando de linha única e postando instantaneamente no Facebook sem nem mesmo abrir um navegador ou outro aplicativo. Consulte Mais informação . Você notará que, tecnicamente, o cURL não faz isso sozinho; uma combinação de ferramentas faz o trabalho.

curl-facebook11

Quanto ao Twitter, costumava ser possível gerenciá-lo diretamente do terminal com cURL. Então o Twitter mudou sua API, e agora há um cliente cURL especial para o Twitter chamado Twurl. Não é a coisa mais fácil de usar, especialmente para um iniciante, e requer autenticação com a plataforma de anúncios do Twitter. Isso faz sentido se você é um desenvolvedor ou um usuário avançado, mas não tanto se você quer apenas twittar a partir da linha de comando. Ainda assim, existem maneiras de se divertir com o Twitter. Você pode usar o cURL para verificar a contagem de seguidores do usuário:

curl -s https://twitter.com/username | grep -o '[0-9, ]* Followers';

curl-comandos-twitter-followers

8. Encontre o seu endereço IP externo

Encontrar o seu endereço IP local é bastante fácil - basta executar o ifconfig ou consultar o applet de gerenciamento de rede. Para o IP externo, a maioria das pessoas usa sites especializados para obter essas informações. Ainda assim, algumas coisas são apenas mais fáceis de fazer a partir do terminal 5 coisas mais fáceis de fazer na linha de comando do Linux Leia mais, e isso pode ser um deles. Você também pode criar um alias Como definir aliases de linha de comando em qualquer sistema operacional Como definir aliases de linha de comando em qualquer sistema operacional Já falamos e recomendamos que você se familiarize com o terminal de linha de comando de seu computador várias vezes no passado. Tina escreveu uma boa cartilha para usuários do Windows com o Guia do Iniciante para o Comando do Windows ... Leia Mais para o comando cURL. Existem vários serviços online que cooperam com o cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Alguns podem dizer mais sobre qualquer endereço IP externo:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

curl-commands-ipaddress

Tudo que você precisa fazer é escolher um serviço. Se você é indeciso, inclua todos eles em seu alias, como soluções de backup.

9. Colar texto e compartilhar imagens

Quebrar o fluxo de trabalho nunca é bom para a produtividade e o foco 5 Ferramentas que ajudam você a se concentrar e a realizar o trabalho Real 5 A batalha pela melhor produtividade e pela existência livre de distração não pode ser conquistada apenas pelo autocontrole. Aplicativos e ferramentas estão indo para o resgate. Consulte Mais informação . Se você fizer a maior parte do seu trabalho no terminal, alternar para um navegador apenas para compartilhar alguns arquivos pode ser impraticável, se não incômodo. Felizmente, alguns serviços de pastebin e compartilhamento de arquivos nasceram para trabalhar com cURL, para que você possa usá-los diretamente do terminal, sem uma conta de usuário.

Clbin e Sprunge.us têm uma sintaxe similar. Com o Clbin, você canaliza um arquivo local ou a saída de um comando e retorna um link para o texto enviado:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Também suporta uploads de imagens (PNG, JPG e GIF):

curl -F '[email protected]"' https://clbin.com

Se você quiser usar o Sprunge.us, digite:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

O Sprunge.us não suporta uploads de imagens por enquanto.

O ix.io baseia-se no mesmo princípio dos dois serviços anteriores, com alguns recursos extras. Para fazer upload de um arquivo, digite:

cat file.txt | curl -F 'f:1=<-' ix.io

ou

curl -F 'f:[email protected]' ix.io

Ao obter um link para o texto enviado, você pode modificar seu URL para mostrar o realce de sintaxe (com ix.io/yourpaste+, ix.io/yourpaste/ ou ix.io/yourpaste/language para uma linguagem de script ou programação específica) . Também é possível limitar quantas vezes um link pode ser visualizado modificando o número após o valor 'read:1' :

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io é principalmente destinado a arquivos baseados em texto, como código-fonte ou logs do sistema. Se você deseja carregar vários formatos de arquivo, use Transfer.sh. Ele suporta imagens, criptografia de arquivos e mantém seus arquivos on-line por duas semanas. Você pode fazer upload de até 5 GB de dados para Transfer.sh. Veja como:

curl --upload-file bunnies.jpg" https://transfer.sh/bunnies.jpg"

Você está livre para definir o nome do arquivo enviado. Para fazer upload de vários arquivos, liste-os um após o outro com a opção -F:

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Verifique o correio não lido no GMail

Existe um grande potencial para ser desbloqueado em cURL se você estiver interessado em detalhes de protocolos relacionados a e-mail (SMTP, POP, IMAP). Para uma verificação rápida de e-mail, este comando serve. Ele analisa seu feed do Gmail e formata a saída (assunto e remetente do email) com os comandos tr, awk, sed e / ou grep . Observe que essa solução é extremamente insegura, pois expõe suas credenciais de login a qualquer pessoa com acesso ao seu terminal. A primeira versão mostra o nome do remetente, enquanto o segundo imprime somente assuntos de e-mail não lidos:

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/\(.*\)\(.*\).*/\2 - \1/p"


curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | grep -oPm1 "(?<=)[^<]+" | sed '1d'

curl-commands-check-gmail

O que mais pode fazer?

O cURL é raramente usado como um comando autônomo. A maioria das pessoas usa isso como parte de um script ou aplicativo. Ainda assim, é possível criar one-liners práticos com cURL, como demonstramos aqui. Muitos destes exemplos foram adaptados de CommandLineFu CommandLineFu: Coleção Incrível de Gemas de Linha de Comando [Linux & Mac] CommandLineFu: Coleção Incrível de Gemas de Linha de Comando [Linux & Mac] Procure uma variedade de comandos incrivelmente úteis. Seja você um administrador de sistemas veterano ou um neófito de linha de comando que se esforça para descobrir mais, o CommandLineFu é uma coleção de comandos orientada por votação que oferece milhares de idéias ... Read More, uma fantástica fonte de hacks de linha de comando inteligente, e você não deve considerá-los como em pedra.

Com conhecimento e experiência suficientes, podemos modificar cada comando, formatá-lo de maneira diferente ou substituí-lo completamente por uma solução melhor. Você pode melhorar nossos comandos cURL sugeridos? Você conhece algum outro uso legal para cURL? Compartilhe suas dicas nos comentários.

Créditos da Imagem: Por Dentro da Introdução à Linha de Comando por Osama Khalid via Flickr.

In this article