5 вариантов использования curl, которые не связаны с веб-запросами

Vitalii Filiuchkov
2 min readAug 6, 2021

--

Photo by Florian Olivo on Unsplash

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

В основном, curl используют только для HTTP/S-запросов, но мало, кто знает, что curl фактически поддерживает следующие протоколы:

«DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET. и TFTP.
- curl.se

Посмотрите, что еще умеет curl — вы точно удивитесь :)

Отправлять почту:

curl — ssl-reqd — url “smtps://smtp.gmail.com:465” \  
— user “<username>@gmail.com:<password>” \
— mail-from “<username>@gmail.com” \
— mail-rcpt “<to@domain.com>” \
— upload-file message.txt

В message.txt, указанном в последней строке содержится текст письма.

Проверять открытый порт:

curl -v telnet: // <хост>: <порт>

Если нужно проверить открытый порт — есть всем известная Ncat (и еще 100500 других спосоов), но и curl тоже можно использовать для этих целей. Если порт открыт, вы подключитесь к нему. Просто ctrl-c для выхода. Если порт закрыт или недоступен — запрос отвалится по таймауту.

Выгружать файлы по протоколу TFTP:

curl -T <filename> tftp://<hostname>

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

Докачивать файлы:

curl -# -O -C - http://ipv4.download.thinkbroadband.com/100MB.zip

Ключ -# добавляет индикатор выполнения, “прогресс бар”, который помогает оценить время до окончания загрузки.

Скачивать файлы из SMB-шары:

curl -u "domain\user:pass" smb://<host>/<share>/<filename>

Я не знаю более простого способа скачать файл из общей SMB папки в консоли. Вместо того, чтобы тратить время на установку общего сетевого ресурса и просмотр файлов, можно быстро загрузить файл (или файлы) одной командой, используя встроенную поддержку SMB в curl.
Этот работает, если вы точно знаете имена нужных файлов, так как просматривать сетевые ресурсы curl не умеет :(

--

--

Vitalii Filiuchkov

SRE Lead in Cloud Division of the largest telecom operator in Russia