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

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 — вы точно удивитесь 🙂

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

curl — ssl-reqd — url “smtps://smtp.gmail.com:465” \    
 — user “[@gmail](http://twitter.com/gmail).com:” \    
 — mail-from “[@gmail](http://twitter.com/gmail).com” \    
 — mail-rcpt “<[to@domain.com](mailto:to@domain.com)>” \    
 — upload-file message.txt

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

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

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

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

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

curl -T  filename tftp://hostname

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

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

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

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

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

curl "domain\user:pass" smb://host/share/filename

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