Linux便利コマンド : curl

うめだ
2025-01-31
2025-01-31
目次

はじめに

みなさま、curlコマンドは活用されていますでしょうか。

コマンドで対象WebサイトのHTTP応答を簡易的に確認することができるのでとても重宝します。

そんなcurlコマンドは、HTTP以外のプロトコルにも対応していますので、
紹介させてもらいます。

環境

OS : AlmaLinux 8
curlバージョン : 7.61.1

使い方

まずは、基本となるHTTPの応答確認から、

$ curl http://192.168.100.100
top page
$

index.htmlに「top page」とだけ記述しているので、こんな表示内容になってます。

では、httpsでアクセスしてみます。

$ curl https://192.168.100.100
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
$

SSL証明書が自己証明書なので、エラーになってしまいます。こんなときは、オプション:-k をつけることで、SSL証明書の検証をスキップすることができます。

$ curl -k https://192.168.100.100
top page
$

今回は正常に表示されましたね。

次によく使うオプションとして、-I があります。オプション:-I をつけることでヘッダーのみを表示させることができます。

$ curl -k -I https://192.168.100.100
HTTP/2 200
date: Mon, 27 Jan 2025 10:22:20 GMT
server: Apache
last-modified: Sun, 26 Jan 2025 08:59:11 GMT
accept-ranges: bytes
content-length: 9
content-type: text/html

$

HTTPステータスコードが200で応答していることが確認できますね。

いかがでしたか? つぎは、FTPの接続です。

アップロード用のファイル:test.txtを作成しておきます。中身はこんな感じです。

$ cat test.txt
test ftp
$

FTPサーバー:192.168.100.100 に対して、FTPユーザー:tfptest で接続し、test.txt をアップロードしてみます。

$ curl -s -k -u ftptest -T ./test.txt ftps://192.168.100.100
Enter host password for user 'ftptest':
$

パスワードを求められるので入力すると、正常にファイルがアップロードされます。
アップロードされたか確認してみます。

$ curl -k -u ftptest ftps://192.168.100.100
Enter host password for user 'ftptest':
-rw-r--r--    1 1008     1008            9 Jan 27 19:22 test.txt
$

されてますね。下記コマンドで、ファイルの内容も確認することができます。

$ curl -k -u ftptest ftps://192.168.100.100/test.txt
Enter host password for user 'ftptest':
test ftp
$

最後は、SMTPの接続です。メールを送信することもできます。

あらかじめmail.txtを以下の内容で作成しておきます。

$ cat mail.txt
From: hogehoge@example.com
To: fugafuga@example.com
Subject: testmail

test mail.

$

下記のコマンドを実行することで、メールを送信することができます。

$ curl -Ss --mail-from hogehoge@example.com --mail-rcpt fugafuga@example.com --upload-file mail.txt smtp://127.0.0.1:25

mail.txtの中身は空でも送信自体はできますが、各種ヘッダーの指定がないとメールソフトで受信した際、該当項目が空になってしまいますのでご注意ください。

まとめ

いかがでしたか?

今回紹介したFTP、SMTP以外にも多くのプロトコルに対応しています。
興味のある方は、いろいろ試してみるのも良いのではないでしょうか。

ぜひ、curlコマンドを活用してみてください。