Получите cURLy: 10 полезных вещей, которые вы можете сделать с помощью cURL

Получите cURLy: 10 полезных вещей, которые вы можете сделать с помощью cURL

Когда мы начинаем изучать инструменты командной строки, мы склонны рассматривать их как одноцелевые. Вас учат этому





cat

печатает содержимое файла,





ls

перечисляет все элементы в каталоге, и





du

показывает использование дискового пространства. Тем не менее, многие инструменты командной строки имеют десятки параметров, все из которых аккуратно описаны в их

man

файлы. Некоторые из них могут творить чудеса в сочетании с другими командами.



Конечно, неразумно ожидать, что кто-то запомнит каждый вариант. Имея это в виду, полезно время от времени обновлять наши знание команд Linux , потому что вы можете найти для них новые применения.

На этот раз мы сосредоточимся на cURL , инструмент для передачи данных через ряд интернет-протоколов, таких как HTTP (S), FTP, Telnet, LDAP, IMAP, POP3, SMTP и другие.





Проще говоря, cURL выполняет различные запросы от клиента к серверу, устанавливая соединение между ними с помощью определенного протокола и связанных с ним методов. Например, в качестве HTTP-клиента cURL может отправить запрос на просмотр или загрузку контента (метод запроса GET) или на размещение контента через форму на веб-сайте (метод запроса POST). Многие веб-приложения и сервисы позволяют cURL взаимодействовать со своими API (интерфейс прикладного программирования).

Поскольку их функциональные возможности частично совпадают, cURL и wget часто сравнивают друг с другом. Оба инструмента могут загружать контент из Интернета, но wget поддерживает рекурсивные загрузки, парсинг веб-страниц и, как правило, кажется более простым в использовании. Если вы просто хотите загружать файлы с терминала, wget, вероятно, будет лучшим выбором.





С другой стороны, если вам нужны расширенные методы аутентификации HTTP и вы хотите загружать файлы, а также загружать их, стоит научиться cURL. Кроме того, wget поддерживает только HTTP (S) и FTP, а cURL охватывает широкий спектр протоколов. Это означает, что cURL может делать больше интересных вещей - и вот десять примеров, чтобы доказать это.

1. Получите сводку погоды

Если бы кто-то сказал вам проверять погоду с терминала, вы бы ожидали увидеть скучные цифры. Не с этой командой.

curl http://wttr.in/LOCATION

Информация предоставляется приложением CLI под названием мы идем , но если вы не хотите его устанавливать, cURL может получить прогноз из своего веб-интерфейса wttr.in. Все, что ему нужно, это место, для которого вы хотите получить прогноз. Просто введите название города, код аэропорта или ваш текущий IP-адрес. Новая функция показывает информацию о фазах луны, если вы набираете:

curl wttr.in/Moon

2. Загрузите файлы и возобновите загрузку.

Загрузка файлов - это то, что мы обычно делаем в браузере. Иногда вам может понадобиться менеджер загрузки; например, при загрузке сразу нескольких файлов или когда вы хотите приостановить загрузку. Хотя cURL не является популярным выбором для одновременных загрузок (вместо него рекомендуется wget), вы все равно можете использовать его для этой цели, комбинируя его мощные параметры (переключатели). Для начала вам понадобится прямая ссылка на файл. В этом примере мы будем использовать PDF-файл журнала Linux Voice.

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

Переключатель O в верхнем регистре (-O) заставляет cURL сохранять файл с именем по умолчанию (обычно с именем из самой ссылки). Если вы хотите сохранить его под другим именем, вы должны использовать строчную букву o, за которой следует новое имя:

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

По умолчанию файлы сохраняются в текущем каталоге (проверьте это с помощью

pwd

команда). Чтобы сохранить их в другом месте, укажите путь после переключателя -o. Ключ -C - позволяет cURL возобновить загрузку. Вы должны приостановить его, нажав Ctrl + C в терминале, и возобновить его, снова выполнив ту же команду загрузки:

cURL отображает ход загрузки в виде таблицы со столбцами, содержащими информацию о скорости загрузки, общем размере файла, прошедшем времени и многом другом. Если вам это не нравится, вы можете выбрать более простой индикатор выполнения, добавив - # или --progress-bar в вашу команду cURL.

Чтобы загрузить сразу несколько файлов, просто перечислите ссылки одну за другой:

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

С помощью других инструментов командной строки мы можем загружать все изображения PNG и JPG из блога Tumblr:

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

В этом случае,

cut

а также

grep

собирать информацию об именах файлов и форматировать ее так, чтобы отображались только файлы с указанными расширениями. Если вы запустите команду без последней трубы:

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

вы просто получите список файлов, удовлетворяющих нашим критериям, но на самом деле они не будут загружены. cURL может получить список изображений с разных страниц при условии, что в блоге используется стандартная разбивка на страницы:

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

Вы можете изменить диапазон, изменив числа в квадратных скобках. Опять же, эта команда будет отображать только изображения; чтобы загрузить их, выполните полную команду в каталоге, в котором вы хотите сохранить изображения:

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

Если вы хорошо разбираетесь в регулярные выражения , вы можете улучшить внешний вид и эффективность этой команды и поделиться результатом в комментариях.

3. Управление файлами на FTP-сервере.

В наши дни мы мало слышим о FTP, но это не значит, что он устарел. Фактически, многие проекты с открытым исходным кодом и дистрибутивы Linux совместно используют свое программное обеспечение на FTP-серверах. Поскольку FTP поддерживается cURL, вы можете использовать его как простой FTP-клиент для загрузки и скачивания файлов. Вы можете просматривать файлы на FTP-сервере, открыв каталоги:

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

Чтобы войти в подкаталог, введите его имя и косую черту (/).

Загрузка файлов аналогична загрузке по протоколу HTTP, описанной в предыдущем разделе. Вы можете использовать -o или -O и добавить -C -, если хотите приостановить загрузку.

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

Хотя cURL не поддерживает рекурсивные загрузки (помните, что wget поддерживает!), Он все же может загружать сразу несколько файлов. Единственное условие - имена файлов должны следовать шаблону. Например, мы можем загрузить с сервера, на котором размещены обои, где все обои имеют имя «НОМЕР обоев»:

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

Некоторые FTP-серверы требуют аутентификации перед загрузкой файлов. cURL позволяет вам войти в систему с параметром -u (пользователь):

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

Вы также можете загружать файлы на FTP-сервер с параметром -T (передача):

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

Здесь вы также можете определить несколько файлов как диапазон. Эту функцию иногда называют «подстановкой». Если имена файлов не соответствуют шаблону, просто укажите их в фигурных скобках (

-T '{file1.txt,image27.jpg}'

). И наоборот, если у них похожие имена, примените ту же логику из примера загрузки Tumblr и используйте квадратные скобки (

-T 'photo[1-50].jpg'

). Обязательно укажите полный путь к файлам, если они не находятся в вашем текущем каталоге.

4. Проверьте, не работает ли веб-сайт.

Мы все были там. Сайт, который вам абсолютно необходим, внезапно перестает работать. Тогда Facebook не загрузится. Что вы будете делать, столкнувшись с настоящей проблемой первого мира?

Вы можете погуглить, попросить друга протестировать его для вас или использовать один из тех одноразовых сайтов, которые сообщают вам, не работает ли какой-либо сайт. Или вы можете просто запустить терминал и запустить cURL:

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

Переключатель I в верхнем регистре (-I) проверяет HTTP-заголовок веб-страницы, а параметр -L (местоположение) добавляется, чтобы cURL выполнял перенаправления. Это означает, что вам не нужно вводить полный URL-адрес Facebook; просто пиши facebook.com а cURL позаботится обо всем остальном благодаря -L. Если есть какие-либо перенаправления, они будут отображаться с их собственным статусом HTTP.

Нас интересует сообщение «200 OK», что означает, что с сайтом все в порядке. Если он действительно не работает, вы увидите что-то вроде этого:

Коды состояния HTTP информативны настолько, насколько это позволяет ваше понимание. Этот метод не является полностью надежным, потому что веб-сайт может возвращать код состояния, указывающий на успешно обработанный запрос, но он будет пустым, когда вы откроете его в браузере. Тем не менее, в большинстве случаев он должен соответствовать реальной ситуации и позволять вам знать, что происходит, а что нет.

5. Разверните сокращенные URL-адреса.

Сокращенные URL-адреса не являются плохими по своей сути. Без них было бы сложно делиться ссылками в Твиттере и других социальных сетях с ограниченным количеством персонажей. Некоторые службы сокращения URL-адресов также предлагают полезную аналитику. Но всегда есть риск, что кто-то пытается скрыть вредоносный контент за сокращенным URL-адресом или что тролль маскирует Rickroll (или что-то намного, намного хуже). Если вы по какой-либо причине почувствуете подозрение в отношении сокращенного URL-адреса, cURL может помочь вам расширить его и выяснить, куда именно он ведет:

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

или

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

Вы можете комбинировать cURL с

grep

или

sed

; основное отличие в форматировании. Sed - один из тех инструментов, которые должен знать каждый пользователь Linux, и он дополняет cURL в этом и нескольких других случаях использования. Не будем забывать, что cURL может загружать файлы с сокращенного URL-адреса (при условии, что URL-адрес действительно указывает на файл):

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

Синтаксис такой же, как и для других загрузок cURL, а опция -L заботится о перенаправлении с сокращенного URL-адреса на исходный.

6. Выразите свою признательность за искусство ASCII.

По общему признанию, это не особо полезно, но выглядит круто. С помощью

pv

, утилита для мониторинга прогресса данных, cURL может отображать анимацию ASCII в терминале.

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

Параметры -s и -q сохраняют обе команды в тихом (тихом) режиме. Параметр -L здесь относится к команде pv и позволяет изменять скорость передачи данных в байтах в секунду. Другими словами, если анимация движется слишком быстро или слишком медленно, попробуйте поиграть с этим числом. Помимо анимации, cURL может отображать простые статические символы ASCII:

В Интернете есть множество веб-сайтов со всеми видами ASCII-арта: от удивительно подробных, высококачественных материалов до странных, глупых и даже NSFW-материалов. Эта техника цифрового искусства восходит к 1960-м годам, и сегодня она является частью культуры и истории Интернета, хранящейся в многочисленных коллекциях и инструментах, которые позволяют вам конвертировать текст и изображения в искусство ASCII . Вы можете использовать его, чтобы украсить свой терминал или разыграть своих друзей - все, что плывет на вашей лодке.

7. Экспериментируйте с социальными сетями.

В использовании социальных сетей из терминала нет ничего нового - мы уже показали вам клиенты Twitter для Linux из командной строки. Хотя вы, вероятно, не переключитесь на cURL в качестве инструмента онлайн-общения, хорошо знать, что вы можете публиковать сообщения в Facebook, как описано здесь. Вы заметите, что технически cURL не делает этого сам по себе; комбинация инструментов выполняет свою работу.

Что касается Twitter, раньше им можно было управлять прямо из терминала с помощью cURL. Затем Twitter изменил свой API, и теперь есть специальный клиент cURL для Twitter под названием Twurl. Это не самая простая вещь в использовании, особенно для новичков, и для этого требуется аутентификация с помощью рекламной платформы Twitter. Это имеет смысл, если вы разработчик или опытный пользователь, но не настолько, если вы просто хотите твитнуть из командной строки. Тем не менее, есть способы повеселиться с Twitter. Вы можете использовать cURL для проверки количества подписчиков пользователя:

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

8. Найдите свой внешний IP-адрес.

Найти локальный IP-адрес достаточно просто - просто запустите

сколько артисты зарабатывают на Spotify
ifconfig

или обратитесь к своему апплету сетевого управления. Для внешнего IP-адреса большинство людей используют специализированные веб-сайты для получения этой информации. Тем не менее, некоторые вещи проще выполнять с помощью терминала, и это может быть одним из них. Вы также можете создать псевдоним для команды cURL. Есть несколько онлайн-сервисов, которые сотрудничают с cURL:

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

Некоторые могут рассказать вам больше о любом внешнем IP-адресе:

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

Все, что вам нужно сделать, это выбрать услугу. Если вы нерешительны, просто включите их все в свой псевдоним в качестве решений для резервного копирования.

9. Вставьте текст и поделитесь изображениями

Нарушение рабочего процесса никогда не идет на пользу продуктивности и сосредоточенности. Если вы выполняете большую часть своей работы в терминале, переключение на браузер только для того, чтобы поделиться несколькими файлами, может быть непрактичным, если не раздражающим. К счастью, некоторые службы pastebin и обмена файлами были созданы для работы с cURL, поэтому вы можете использовать их прямо из терминала, без учетной записи пользователя.

Clbin а также Sprange.us имеют похожий синтаксис. С помощью Clbin вы передаете локальный файл или вывод команды по конвейеру, и он возвращает ссылку на ваш загруженный текст:

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

Он также поддерживает загрузку изображений (PNG, JPG и GIF):

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

Если вы хотите использовать вместо этого Sparage.us, введите:

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

Sparage.us пока не поддерживает загрузку изображений.

Ix.io основан на том же принципе, что и предыдущие два сервиса, с некоторыми дополнительными функциями. Чтобы загрузить файл, введите:

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

или

curl -F 'f:1=@file.txt' ix.io

Когда вы получаете ссылку на загруженный текст, вы можете изменить его URL-адрес, чтобы отображалась подсветка синтаксиса (с

ix.io/yourpaste+

,

ix.io/yourpaste/

, или

ix.io/yourpaste/language

для конкретного языка сценариев или программирования). Также можно ограничить количество просмотров ссылки, изменив число после

'read:1'

ценить:

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

Ix.io в первую очередь предназначен для текстовых файлов, таких как исходный код или системные журналы. Если вы хотите загрузить файлы различных форматов, используйте Transfer.sh . Он поддерживает изображения, шифрование файлов и сохраняет ваши файлы в сети в течение двух недель. На Transfer.sh можно загрузить до 5 ГБ данных. Вот как:

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

Вы можете указать имя загружаемого файла. Чтобы загрузить несколько файлов, перечислите их один за другим с параметром -F:

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

10. Проверяйте непрочитанные письма в GMail.

В cURL есть огромный потенциал, который можно разблокировать, если вы хотите вникнуть в подробности протоколов, связанных с электронной почтой (SMTP, POP, IMAP). Для быстрой проверки электронной почты подойдет эта команда. Он анализирует ваш канал GMail и форматирует вывод (тему и отправителя электронной почты) с помощью

tr

,

awk

,

sed

и / или

grep

команды. Обратите внимание, что это решение крайне небезопасно, поскольку оно предоставляет ваши учетные данные для входа любому, у кого есть доступ к вашему терминалу. Первая версия показывает имя отправителя, а вторая печатает только непрочитанные темы писем:


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'

Что еще может делать cURL?

cURL редко используется как отдельная команда. Большинство людей используют его как часть сценария или приложения. Тем не менее, как мы продемонстрировали здесь, с помощью cURL можно создавать практичные однострочники. Многие из этих примеров были адаптированы из CommandLineFu, фантастического источника умных хаков для командной строки, и вы не должны рассматривать их как высеченные в камне.

Обладая достаточными знаниями и опытом, мы можем изменить каждую команду, отформатировать ее по-другому или полностью заменить ее лучшим решением. Можете ли вы улучшить предлагаемые нами команды cURL? Вы знаете какие-нибудь другие интересные варианты использования cURL? Делитесь советами в комментариях.

Кредиты изображений: Введение в командную строку Осама Халид через Flickr.

Делиться Делиться Твитнуть Эл. адрес Удалите эти файлы и папки Windows, чтобы освободить место на диске

Вам нужно очистить дисковое пространство на вашем компьютере с Windows? Вот файлы и папки Windows, которые можно безопасно удалить, чтобы освободить место на диске.

Читать далее
Похожие темы
  • Linux
  • FTP
  • Управление загрузкой
  • Терминал
Об авторе Ивана Айседора Девчич(Опубликовано 24 статей)

Ивана Айседора - внештатный писатель и переводчик, любитель Linux и фанатка KDE. Она поддерживает и продвигает бесплатное программное обеспечение с открытым исходным кодом и всегда ищет свежие, инновационные приложения. Узнайте, как с нами связаться здесь .

Ещё от Ivana Isadora Devcic

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться
Категория Linux