【Linux】【Windows】curl コマンド

■ はじめに

* よく使う curlコマンドについて、メモ。

目次

【1】curl コマンド
【2】インストールされているか確認
【3】オプション
【4】curl あれこれ
 1)コンテンツ取得
 2)SSLサイトの場合
 3)wget的な使い方 (コンテンツダウンロード)
 4)HTTP ヘッダーを確認
 5)REST API(JSON形式)をコールする
 6)Proxy経由で接続
 7)ネットワーク調査用のオプション指定

【1】curl コマンド

* curl(cURL) =「Client URL」の略 (curlは、カールと読む) 
* URL構文を使ってサーバーとのデータ転送するコマンド

【2】インストールされているか確認

* いつの間にか、Windowsでも使える
* 「curl --version」で使えるか確認

 【3】オプション

# オプション 説明
1 -s, --silent 進捗やエラーを表示しない
2 -O 標準出力ではなくファイルに出力
3 -L リダイレクト対応
4 -f, --fail 何かエラーがあった時は、エラーコード返す
5 -F Upload時に送信したいファイルを指定 (e.g. curl -X POST -F jpgfile=@/var/tmp/demo.jpg https://xxxxx.net/upload)
6 -d, --data POST でフォームを送信する。引数で送信するコンテンツを指定する
7 -H Request Headerを追加(Content-Typeを指定する場合。e.g. 「-H "Content-Type:application/json"」)
8 -X, --request HTTPメソッド(GET/POST/PUT/DELETE etc)を指定。e.g. 「-X DELETE」)
9 -v, –verbose 処理状況の更なる詳細や説明を出力
10 -I (大文字のアイ) HTTPレスポンスヘッダーの取得
11 -x, --proxy プロキシ e.g. -x http://192.168.1.1:3128
12 --noproxy プロキシを経由せずに通信

【4】curl あれこれ

 1)コンテンツ取得

* コンテンツが取得できるか確認

コマンド例

curl http://www.yahoo.co.jp/

curl http://www.yahoo.co.jp/ > result.txt

参考文献
https://hydrocul.github.io/wiki/commands/curl.html

2)SSLサイトの場合

curl --insecure https://www.yahoo.co.jp/

curl -k https://www.yahoo.co.jp/

参考文献
http://www.turbolinux.com/support/document/knowledge/866.html

3)wget的な使い方 (コンテンツダウンロード)

# curl -OL {ダウンロードするURL}
curl -OL http://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip

# -O: 標準出力ではなくファイルに出力
# -L: リダイレクト対応

 4)HTTP ヘッダーを確認

curl -I http://www.yahoo.co.jp/

# -I: HTTPレスポンスヘッダーの取得

 使いどころ

* 例えば、リダイレクトの設定を行った際のチェック

参考文献
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f

5)REST APIJSON形式)をコールする

* 以下の関連記事で使用した

Apache Kafka ~ Kafka Connect ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133

# より抜粋

curl -X POST --header "Content-Type: application/json" \
  http://localhost:8083/connectors -d @sample-source.json

curl -X DELETE http://localhost:8083/connectors/sample-source-data

構文

curl -X POST -H "Content-Type: application/json" -d "${JSON}" "${ENDPOINT}"

参考文献
https://qiita.com/Jazuma/items/5aa0a205f67c6dba9425

6)Proxy経由で接続

curl google.com -x http://192.168.1.1:3128

# -x http://ユーザ名:パスワード@サーバ名:ポート
curl google.com -x http://user:password@192.168.1.1:3128

Proxy経由せずに通信

curl --noproxy * http://127.0.0.1:8080

参考文献
https://qiita.com/tkj/items/c6dad4efc0dff4fecd93
https://yamakisso.hatenablog.com/entry/2020/12/24/025955

7)ネットワーク調査用のオプション指定

curl -IvL https://hub.docker.com/

# -I : HTTPレスポンスヘッダーの取得
# -v, –verbose : 処理状況の更なる詳細や説明を出力
# -L : リダイレクト対応

参考文献

https://daeudaeu.com/curl-command/
https://qiita.com/shtnkgm/items/45b4cd274fa813d29539
https://qiita.com/yasuhiroki/items/a569d3371a66e365316f
https://weblabo.oscasierra.net/curl-post/

関連記事

Apache Kafka ~ Kafka Connect ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
シェル ~ 非同期 ~
https://dk521123.hatenablog.com/entry/2023/06/01/000000
ネットワーク系コマンド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/07/27/214633