N2SM Intern Blog

学習したことをまとめていくブログです!

cUrlコマンドの使い方

cUrlとはHTTPアクセスをしてコンテンツを取得できるコマンドのことです。Elasticsearchを使う上で必要となるので、まとめておきます。
環境はLinuxで行いました。

ページ取得

基本的な使い方としては、URLをパラメータにしてそのコンテンツを標準出力させます。

$ curl yahoo.co.jp

上のように入力すると、YahooのサイトのHTMLが表示されます。


-o ファイル名

取得結果をファイルに保存します。
以下のように入力すると、URLのファイルがu.dataというファイル名で保存されます。

$ curl -o u.data http://files.grouplens.org/datasets/movielens/ml-100k/u.data

-X

使用する要求のコマンドです。
HTTPリクエストと一緒に使われます。

HTTPリクエストメソッド

一部、http://research.nii.ac.jp/~ichiro/syspro98/http.htmlを参考にしてまとめていきます。

Webサイトを見る時、サーバに対して「サイトを見たい!」という要求を出します。この要求のことをリクエストと言います。
HTTPリクエストメソッドには以下の種類があります。

  • GET : 情報をWebプラウザに返す。
  • POST: サーバに情報を送る。
  • PUT : サーバに情報を送り、サーバ上で保存。
  • DELETE : サーバの情報を削除。
  • HEAD : ヘッダ情報を要求する。
  • CONNECT : プロキシサーバを通す。
  • OPTION : 通信オプションを調べる。
  • TRACE : 要求がどのプロキシサーバを経由して送信されるかを返す。
  • LINK : 指定した URL とリソースにリンク関係を結ぶ。
  • UNLINK : LINKを解除する。


これ以降、Elasticsearchで試してみました。

-XPUT

データを入れる場合に使用します。
インデックス名「twitter」、タイプ名「tweet」で作成します。

$ curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
    "user" : "kimchy",
    "post_date" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}'

すると、以下のように表示され、データを挿入できます。

{
    "_index" : "twitter",
    "_type" : "tweet",
    "_id" : "1",
    "_version" : 1,
    "created" : true
}

-XGET

データの情報を取得します。
以下のように入力すると、userが"kimchy"であるデータの情報が返ってきます。

$ curl -XGET 'http://localhost:9200/twitter/_search?q=user:kimchy'

-XPOST

以下のように入力すると、"index.mapping.allow_type_wrapper"が"true"であると設定することが出来ます。

$ curl -XPOST 'http://localhost:9200/twitter' -d '{
  "settings": {
    "index": {
      "mapping.allow_type_wrapper": true
    }
  }
}'

-XDELETE

データを削除することが出来ます。
下のように入力すると、Elastic Searchで全てのデータ(index)を削除します。
とても怖いコマンドなので、気をつけましょう!

$ curl -XDELETE 'http://localhost:9200/*'

下のように入力すると、"twitter"という名前のindexが削除されます。

$ curl -XDELETE 'http://localhost:9200/twitter/'

以下のいずれかを入力すると、userが"kimchy"であるデータを削除することが出来ます。

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query?q=user:kimchy'

$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
'

-d

フォームの送信と同様のことを行うためのオプションです。

  • dの後に、「 name=value 」という形でフォームの名前と値をイコールでむすびます。これは下のように複数個つけることが可能です。
curl -d u_ID=userid -d PassW=password http://www.n2sm_intern.com/login.cgi

-I

HTTPヘッダを取得するために使用するオプションです。
以下のように入力すると、ヘッダ情報が出力されます。

curl -I http://www.n2sm.net/

出力

HTTP/1.1 200 OK
Date: Mon, 25 May 2015 07:14:29 GMT
Server: Apache/2.2.29
X-Powered-By: PHP/5.2.17
P3P: CP="NOI NID ADMa OUR IND UNI COM NAV"
Cache-Control: private, must-revalidate
Set-Cookie: 19vyu7gicuf40sc4o40gcsgks=a2a105bf41afc90c669ee6ada6367d27; path=/
Set-Cookie: 19vyu7gicuf40sc4o40gcsgks=a2a105bf41afc90c669ee6ada6367d27; path=/
Content-Type: text/html; charset=UTF-8

-u

認証が必要となるサイトでは、ユーザIDとパスワードが必要となります。
例えば、以下のようにユーザIDとパスワードをコロンでつなげて入力します。

$ curl -u userid:password http://www.n2sm_intern.com/member/