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

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

Quando começamos a aprender sobre ferramentas de linha de comando, tendemos a vê-las como um único propósito. Você é ensinado que





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 perfeitamente descritas em seus

man

arquivos. Alguns deles podem fazer maravilhas quando combinados com outros comandos.



Obviamente, não é razoável esperar que alguém se lembre de cada opção. Com isso em mente, é bom ocasionalmente atualizar nosso conhecimento de comandos Linux , porque você pode descobrir novos usos para eles.

Desta vez, estamos nos concentrando em ondulação , uma ferramenta para transferência de dados por meio de vários protocolos de Internet, como HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP e mais.





Em termos simplificados, cURL realiza várias solicitações de um cliente a 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, cURL pode enviar uma solicitação para visualizar ou baixar 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 cURL interaja com suas APIs (Interface de Programação de Aplicativo).

Como suas funcionalidades se sobrepõem até certo ponto, cURL e wget são freqüentemente comparados entre si. Ambas as ferramentas podem baixar conteúdo da Internet, mas wget suporta downloads recursivos, web scraping e geralmente parece mais simples de usar. Se você deseja apenas baixar arquivos do terminal, provavelmente o wget é uma escolha melhor.





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

1. Obtenha o boletim meteorológico

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

curl http://wttr.in/LOCATION

As informações são fornecidas por um aplicativo CLI chamado nós vamos , mas se você não quiser instalá-lo, cURL pode buscar a previsão em seu frontend da 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

2. Baixar arquivos e retomar os downloads

O download de arquivos é algo que geralmente fazemos no navegador. Às vezes, você vai querer usar um gerenciador de download; 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 esse propósito combinando suas opções poderosas (interruptores). 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

A opção O maiúscula (-O) faz com que cURL salve o arquivo com o nome de arquivo padrão (geralmente o do próprio link). Se você quiser salvá-lo com um nome diferente, use 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-o com o

pwd

comando). Para salvá-los em outro lugar, forneça o caminho após a opção -o. A chave -C - permite que cURL retome o download. Você faria uma pausa pressionando Ctrl + C no terminal e continuaria executando o mesmo comando de download novamente:

cURL exibe o andamento do download em um formato semelhante a uma tabela, com colunas contendo informações sobre a velocidade de download, tamanho total do arquivo, tempo decorrido e muito mais. Se você não gostar disso, 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, apenas liste 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

coletar informações sobre nomes de arquivos e formatá-los de forma que apenas os arquivos com as extensões especificadas sejam exibidos. Se você executar o comando sem o último tubo:

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

você apenas obterá uma lista de arquivos que atendem aos nossos critérios, mas não será feito o download deles. 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 full 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 , você pode melhorar a aparência e a eficiência desse comando e compartilhar o resultado nos comentários.

3. Gerenciar arquivos em um servidor FTP

Não ouvimos muito sobre FTP atualmente, mas isso não significa que ele seja obsoleto. Na verdade, muitos projetos de código aberto e distribuições Linux compartilham seu software em servidores FTP. Como o FTP é compatível com cURL, você pode usá-lo como um cliente FTP simples para fazer upload e download de arquivos. Você pode navegar pelos arquivos em um servidor FTP acessando os diretórios:

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

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

O download de arquivos é semelhante aos downloads de 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 oferece!), Ele ainda pode baixar uma variedade de arquivos de uma vez. A única condição é que os nomes dos arquivos sigam um padrão. Por exemplo, podemos fazer o download de um servidor de hospedagem de papel de parede onde todos os papéis de parede são chamados de 'papel de paredeNUMBER':

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

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

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

Você também pode fazer upload de 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 liste-os 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 no diretório atual.

4. Verifique se um site está fora do ar

Todos nós já passamos por isso. Um site de que você realmente precisa para de funcionar repentinamente. Então o Facebook não carrega. Diante de um verdadeiro problema de primeiro mundo, o que você faz?

Você poderia pesquisar no Google, pedir a um amigo para testá-lo para você ou usar um daqueles sites de serviço único que informam se um site está fora do ar. Ou você pode simplesmente ligar o terminal e executar cURL:

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

A chave I maiúscula (-I) verifica o cabeçalho HTTP de uma página da web, e a opção -L (local) é adicionada para fazer o cURL seguir os redirecionamentos. Isso significa que você não precisa digitar a URL completa do Facebook; apenas escreva facebook.com e cURL cuidará do resto graças a -L. Se houver redirecionamentos, eles serão exibidos com seu próprio status HTTP.

A mensagem que nos interessa é '200 OK', o que significa que está tudo bem com o site. Se realmente estiver baixo, você verá algo assim:

Os códigos de status HTTP são tão informativos quanto o seu conhecimento permite. Este 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á vazio quando você o abrir no navegador. Ainda assim, na maioria dos casos, deve corresponder à situação real e permitir que você saiba o que está acontecendo - ou não.

5. Expanda URLs encurtados

URLs encurtados não são inerentemente ruins. Sem eles, seria difícil compartilhar links no Twitter e em outras redes sociais com caracteres limitados. Alguns serviços de encurtamento de URL também oferecem análises úteis. Mas sempre há o risco de que alguém esteja tentando ocultar conteúdo malicioso por trás de um URL encurtado ou de que um troll esteja mascarando um Rickroll (ou algo muito, muito pior). Se você alguma vez suspeitar de um URL encurtado por qualquer motivo, cURL pode ajudá-lo a expandi-lo e descobrir para onde exatamente ele leva:

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

ou

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

Você pode combinar cURL com

grep

ou

sed

; a principal diferença está na formatação. Sed é uma daquelas ferramentas que todo usuário Linux deve conhecer e complementa cURL neste e em alguns outros casos de uso. Não vamos esquecer que cURL pode baixar arquivos de um URL encurtado (desde que o URL realmente aponte para um arquivo):

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

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

6. Mostre sua apreciação pela arte ASCII

É certo que isso não é particularmente útil, mas parece legal. Com a ajuda de

pv

, um utilitário para monitorar o progresso dos dados, 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 ambos os comandos no modo silencioso (silencioso). A opção -L aqui se refere ao comando pv e permite que você modifique 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 brincar com esse número. Além de animações, cURL pode exibir arte ASCII simples e estática:

A Web tem muitos sites com todos os tipos de arte ASCII por aí: de peças incrivelmente detalhadas e de alta qualidade a materiais estranhos, bobos e até mesmo NSFW. Essa técnica de arte digital remonta à década de 1960 e hoje faz parte da cultura e da história da Internet, mantida viva em inúmeras coleções e ferramentas que permitem que você converter texto e imagens em arte ASCII . Você pode usá-lo para decorar seu terminal ou para brincar com seus amigos - o que quer que faça seu barco flutuar.

7. Experimente as mídias sociais

Usar a mídia social a partir do terminal não é nenhuma novidade - já mostramos a você clientes do Twitter de linha de comando para Linux. Embora você provavelmente não vá mudar para cURL como sua ferramenta de socialização online, é bom saber que você pode postar no Facebook com ele, conforme descrito aqui. Você notará que, tecnicamente, cURL não faz isso sozinho; uma combinação de ferramentas realiza o trabalho.

Quanto ao Twitter, costumava ser possível gerenciá-lo diretamente do terminal com cURL. Então o Twitter mudou sua API e agora existe 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 Twitter Ad Platform. Isso faz sentido se você for um desenvolvedor ou um usuário avançado, mas não tanto se você quiser apenas tweetar da linha de comando. Ainda assim, existem maneiras de se divertir com o Twitter. Você pode usar cURL para verificar a contagem de seguidores de um usuário:

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

8. Encontre o seu endereço IP externo

Encontrar o seu endereço IP local é bastante fácil - basta executar

construa sua própria caixa de tv android
ifconfig

ou consulte o miniaplicativo 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 mais fáceis de fazer no terminal, e esta pode ser uma delas. Você também pode criar um alias para o comando cURL. Existem vários serviços online que cooperam com 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 lhe dizer mais sobre qualquer endereço IP externo:

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

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

9. Colar texto e compartilhar imagens

Quebrar seu fluxo de trabalho nunca é bom para produtividade e foco. Se você faz a maior parte do seu trabalho no terminal, mudar para um navegador apenas para compartilhar alguns arquivos pode ser impraticável, se não irritante. Felizmente, alguns serviços de pastebin e compartilhamento de arquivos nasceram para funcionar com cURL, então você pode usá-los diretamente do terminal, sem uma conta de usuário.

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

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

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

curl -F 'clbin=@image.png' https://clbin.com

Se você quiser usar Sprunge.us em vez disso, digite:

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

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

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:1=@file.txt' ix.io

Ao obter um link para o texto carregado, você pode modificar seu URL para mostrar o destaque de sintaxe (com

ix.io/yourpaste+

,

ix.io/yourpaste/

, ou

ix.io/yourpaste/language

para um script específico ou linguagem de programação). Também é possível limitar quantas vezes um link pode ser visualizado, modificando o número após o

'read:1'

valor:

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

Ix.io destina-se principalmente a arquivos baseados em texto, como código-fonte ou logs do sistema. Se você quiser fazer upload de uma variedade de formatos de arquivo, use Transfer.sh . Ele suporta imagens, criptografia de arquivos e mantém seus arquivos online 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ê é livre para definir o nome do arquivo carregado. 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 as mensagens não lidas no GMail

Há um enorme potencial para ser desbloqueado no cURL se você estiver disposto a se aprofundar em detalhes de protocolos relacionados a e-mail (SMTP, POP, IMAP). Para uma verificação rápida de e-mail, este comando servirá. Ele analisa o feed do GMail e formata a saída (assunto do e-mail e remetente) com

tr

,

awk

,

sed

e / ou

grep

comandos. Observe que esta solução é extremamente insegura porque expõe suas credenciais de login a qualquer pessoa com acesso ao seu terminal. A primeira versão mostra o nome do remetente, enquanto a segunda imprime apenas assuntos de e-mail não lidos:


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

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

O que mais o cURL pode fazer?

cURL raramente é usado como um comando independente. A maioria das pessoas o usa como parte de um script ou aplicativo. Ainda assim, é possível criar one-liners práticos com cURL, como demonstramos aqui. Muitos desses exemplos foram adaptados do CommandLineFu, uma fonte fantástica de hacks inteligentes de linha de comando, e você não deve considerá-los gravados na 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 interessante para o cURL? Compartilhe suas dicas nos comentários.

Créditos de imagem: Introdução à linha de comando por Osama Khalid via Flickr.

Compartilhado Compartilhado Tweet O email Exclua esses arquivos e pastas do Windows para liberar espaço em disco

Precisa liberar espaço em disco no seu computador Windows? Aqui estão os arquivos e pastas do Windows que podem ser excluídos com segurança para liberar espaço em disco.

Leia a seguir
Tópicos relacionados
  • Linux
  • FTP
  • Gerenciamento de download
  • terminal
Sobre o autor Ivana Isadora Devcic(24 artigos publicados)

Ivana Isadora é escritora e tradutora freelance, amante do Linux e fã do KDE. Ela apóia e promove software de código aberto e gratuito e está sempre procurando por aplicativos novos e inovadores. Descubra como entrar em contato aqui .

Mais de Ivana Isadora Devcic

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever