Содержание
- 1 1. Получить отчет о погоде
- 2 2. Скачать файлы и возобновить загрузку
- 3 3. Управление файлами на FTP-сервере
- 4 4. Проверьте, не работает ли веб-сайт
- 5 5. Разверните Сокращенные URL
- 6 6. Покажите свою признательность за ASCII Art
- 7 7. Экспериментируйте с социальными медиа
- 8 8. Найдите свой внешний IP-адрес
- 9 9. Вставьте текст и обмениваться изображениями
- 10 10. Проверьте непрочитанную почту на GMail
- 11 Что еще может сделать cURL?
Когда мы начинаем изучать инструменты командной строки, мы склонны рассматривать их как одноразовые. Вас этому учили кошка
печатает содержимое файла, Ls
перечисляет все элементы в каталоге, и дю
показывает использование дискового пространства. Тем не менее, многие инструменты командной строки имеют десятки опций, все аккуратно описаны в их человек
файлы. Некоторые из них могут творить чудеса в сочетании с другими командами.
Конечно, неразумно ожидать, что кто-то должен помнить каждый вариант. Имея это в виду, иногда полезно обновить наши знания о командах 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 под названием wego, но если вы не хотите его устанавливать, 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:
локон http://concept-art.tumblr.com/ | grep -o 'src = "[^"] *. [png-jpg] "' | cut -d \" -f2 | пока читаю л; do curl "$ l" -o "$ {l ## * /}"; сделанный
В этом случае, резать
а также Grep
Соберите информацию об именах файлов и отформатируйте ее так, чтобы отображались только файлы с указанными расширениями. Если вы запустите команду без последнего канала:
локон 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 | пока читаю л; do curl "$ l" -o "$ {l ## * /}"; сделанный
Если вы хорошо разбираетесь в регулярных выражениях
Вы можете улучшить внешний вид и эффективность этой команды и поделиться результатом в комментариях.
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 поддерживает!), Он все же может загружать сразу несколько файлов. Единственное условие — имена файлов следуют шаблону. Например, мы могли бы скачать с сервера хостинга обоев, где все обои называются «wallpaperNUMBER»:
curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg
Некоторые FTP-серверы требуют проверки подлинности перед загрузкой файлов. cURL позволяет войти в систему с опцией -u (user):
curl -u имя пользователя: пароль -O ftp://ftp.protectedserver.com/files/example.txt
Вы также можете загружать файлы на FTP-сервер с опцией -T (передача):
curl -u имя пользователя: пароль -T /home/user/Documents/test.txt ftp://ftp.myserver.com
Здесь вы также можете определить несколько файлов в качестве диапазона. Эту функцию иногда называют «глобализация». Если имена файлов не соответствуют шаблону, просто перечислите их в фигурных скобках (-T "{file1.txt, image27.jpg}"
). И наоборот, если у них одинаковые имена, примените ту же логику из примера загрузки Tumblr и используйте квадратные скобки (-Т "фото [1-50] .jpg"
). Обязательно укажите полный путь к файлам, если они не находятся в вашем текущем каталоге.
4. Проверьте, не работает ли веб-сайт
Мы все были там. Веб-сайт, который вам абсолютно необходим, внезапно перестает работать. Тогда Facebook не загрузится. Столкнувшись с настоящей проблемой первого мира, что вы делаете?
Вы можете найти его в Google, попросить друга протестировать его для вас или использовать один из тех сайтов, обслуживающих один человек, которые сообщают вам, не работает ли веб-сайт. Или вы можете просто запустить терминал и запустить cURL:
curl - это 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, или что тролль маскирует Рикролл
(или что-то намного, намного хуже). Если по какой-либо причине вы с подозрением относитесь к сокращенному URL-адресу, cURL может помочь вам расширить его и выяснить, к чему именно он приводит:
curl -sIL http://buff.ly/1lTcZSM | grep ^ Местоположение;
или же
curl -sI http://buff.ly/1lTcZSM | sed -n 's / Location: * // p';
Вы можете комбинировать cURL с Grep
или же СЕПГ
; Основное отличие заключается в форматировании. Sed — это один из тех инструментов, который должен знать каждый пользователь Linux
и дополняет cURL в этом и нескольких других случаях использования. Давайте не будем забывать, что cURL может загружать файлы с укороченного URL (при условии, что URL действительно указывает на файл):
curl -L -o filename.txt http: //short.url
Синтаксис такой же, как и для других загрузок cURL, а опция -L обеспечивает перенаправление с сокращенного URL-адреса на исходный.
6. Покажите свою признательность за ASCII Art
Правда, это не особенно полезно, но выглядит круто. С помощью ру
, Утилита для мониторинга прогресса данных, 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-адрес достаточно просто — просто запустите 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. Вставьте текст и обмениваться изображениями
Нарушение вашего рабочего процесса никогда не идет на пользу продуктивности и концентрации
, Если вы выполняете большую часть своей работы в терминале, переключение на браузер только для того, чтобы поделиться несколькими файлами, может быть непрактичным, если не раздражающим. К счастью, некоторые службы вставки и обмена файлами были созданы для работы с cURL, поэтому вы можете использовать их прямо из терминала, без учетной записи пользователя.
Clbin и Sprunge.us имеют схожий синтаксис. С Clbin вы передаете локальный файл или вывод команды, и он возвращает ссылку на ваш загруженный текст:
кот textfile.txt | curl -F 'clbin =<-' https://clbin.com
Он также поддерживает загрузку изображений (PNG, JPG и GIF):
curl -F 'clbin=@image.png' https://clbin.com
Если вы хотите использовать Sprunge.us вместо этого, введите:
кот textfile.txt | curl -F 'sprunge =<-' http://sprunge.us
Sprunge.us пока не поддерживает загрузку изображений.
Ix.io основан на том же принципе, что и предыдущие два сервиса, с некоторыми дополнительными функциями. Чтобы загрузить файл, введите:
кошка 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
для конкретного сценария или языка программирования). Также можно ограничить количество просмотров ссылки, изменив число после 'Следующим образом: 1'
значение:
кошка file.txt | curl -F 'f: 1 =<-' -F 'read:1=2' ix.io
Ix.io в первую очередь предназначен для текстовых файлов, таких как исходный код или системные журналы. Если вы хотите загрузить различные форматы файлов, используйте Transfer.sh. Он поддерживает изображения, шифрование файлов и поддерживает ваши файлы в сети в течение двух недель. Вы можете загрузить до 5 ГБ данных в Transfer.sh. Вот как:
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 и форматирует выходные данные (тему и адрес электронной почты) с тр
, AWK
, СЕПГ
и / или Grep
команды. Обратите внимание, что это решение крайне небезопасно, поскольку оно предоставляет ваши учетные данные для входа любому, кто имеет доступ к вашему терминалу. Первая версия показывает имя отправителя, а вторая печатает только непрочитанные темы письма:
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?
cURL редко используется как отдельная команда. Большинство людей используют его как часть сценария или приложения. Тем не менее, как мы продемонстрировали здесь, возможно создать практичные однострочные с помощью cURL. Многие из этих примеров были адаптированы из CommandLineFu
- фантастический источник умных взломов командной строки, и вы не должны рассматривать их как каменные.
Обладая достаточными знаниями и опытом, мы можем изменить каждую команду, отформатировать ее по-разному или полностью заменить ее на лучшее решение. Можете ли вы улучшить наши предлагаемые команды cURL? Знаете ли вы какие-либо другие интересные варианты использования cURL? Поделитесь своими советами в комментариях.
Кредиты изображений: Внутри Введение в командную строку Усамы Халида через Flickr.