Unix command > curlコマンド

更新日 2021-02-13
広告
curlはHTTP通信を行うコマンドです。URLを指定してあげると、そのURLで指定されたコンテンツを取得し、標準出力します。
基本的な構文は以下のようになります。
$ curl [options] URL
URLの文字列は、例えば http://sweng.web.fc2.com/ のような文字列になります。また、{}や[]を使うことで、一度に複数のURLを指定できます。例えば、http://hoge.{one,two}.com は、http://hoge.one.com と、http://hoge.two.com の2つのURLを指定することになります。また http://hoge/archive[1996-1998] は、 http://hoge/archive1996 と http://hoge/archive1997 と http://hoge/archive1998 の3つのURLを指定することになります。

データを送信

POSTのbody部分にデータを付加したい場合は、-d オプションを利用します。
$ curl -d "hoge" http://sample.com
これで、"hoge" というデータがbody部に追加され、サーバにPOSTされます。ファイルの内容を送信したい場合は -d @filename とします。
$ curl -d @datafile.txt http://sample.com
-dオプションだと、ファイル中の改行は削除されます。改行を削除したくない場合は --data-binary オプションを使うとよいでしょう。
$ curl --data-binary @datafile.txt http://sample.com

HTTPヘッダを追加

リクエストにHTTPヘッダを追加するには、--headerオプションを使います。
$ curl --header "Content-Type: text/csv" http://sample.com 

証明書チェックの無効

Ubuntuで、SDKMANをインストールしようとしたら、以下のエラーが発生した。
$ curl -s https://get.sdkman.io | bash
  :
curl: (60) SSL certificate problem: unable to get local issuer certificate
証明書チェックを無効にするとか(-kオプション)、CURL用の証明書を使う(--cacertオプション)などの方法があるが、いずれにしても、以下のように単純にオプションを指定してもエラーは回避できない。
$ curl -k -s https://get.sdkman.io | bash

上記のコマンドを実行すると、まずsdkman.ioから「インストールスクリプト」をダウンロードし、そのスクリプトをbashで実行しようとする。 ここで、最初のインストールスクリプトは問題なく成功している。 インストールスクリプトの中で、あらためてcurlコマンドを実行しており、その際に証明書でエラーになっている。 なので、上記のように、最初のcurlコマンドに-kオプションをつけてもエラーは回避できない。

そこで、curlの設定ファイル(~/.curlrc)に、証明書チェックを無効にする設定を記載する。
$ echo insecure >> ~/.curlrc
もしくは、証明書を使うような設定をしてもよい。 その場合は、 https://curl.se/docs/caextract.html の最初の方にある cacert.pem を使うとよい。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system