2017年06月19日

cURLはHTTPだけじゃない

フロントエンドやバックエンドのエンジニアにとってcURLといえばHTTP(S)
おもむろに historyしてみても、皆さんHTTPの通信しかしてないんじゃないでしょうか。

cURLって実は結構凄いんです。いや、ほんと。

cURLはHTTP(S)だけじゃない!

cURLのmanpageには下記の文章があります。

curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.
引用元:https://curl.haxx.se/docs/manpage.html

cURLは、DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTPをサポートしています。

使い方

使い方は簡単。プロトコルやポートを指定するだけです。

curl -vv smtp://メールサーバーのアドレス:25

実際にメールを送るなら

curl smtp://example.com --mail-from 'from@example.com' --mail-rcpt 'to@example.com' -u name  -T \
"From: 'xxxxx'
To: 'xxxxx'
Subject: I am cURL

NoHTTP(Not Only HTTP)
"

手打ちメールの完成です。

実際どんなところで使うの?

どんなサーバーでも大体入っているので、telnet not found と言われた時に活躍します。

$ curl -vv telnet://xxx.xxx.xxx.xxx:22

telnet もない、 dig もない、当然 tcpdump なんて入ってない。

メールが送信できない、SSHが繋がらない、そんな時には curl があります。

※ちなみに筆者のhistoryを集計したところ
git, cd, ll, ssh, cat, npm, q, ghci, date, sedの順でcurlはそんな使ってませんでした。

RELATED POSTS