curlコマンドの情報は意外と少ないが
curlはwgetやftpのように「Webサーバのコンテンツをダウンロードしたりアップロードする
コマンド」くらいの認識しかなかったが、アプリケーションのプログラム内に組み込んで
かなり深いこともできるらしく、実はもっと深いヤツのようだ。
応用的なことをいろいろ調べたかったが、ネット上での情報は意外と少ないし、参考書にも
触り程度しか書かれていない。manを通読している時間もない。
取り急ぎ、今分かってることくらいを備忘録として書いておく。
まず一番単純な例。example.comサイトのトップページを標準出力へ出力。
$ curl http://www.example.com/
標準出力ではなくローカルへ自由なファイル名で保存するには-oオプションで。
$ curl -o toppage.jpg http://www.example.com/
-O(オーの大文字)オプションだとURL上のファイル名で保存する。
$ curl -O http://www.example.com/images/photo1.jpg
http://www.example.com/のようにファイル名が無いURLだと、ファイルが
作成されないことに注意。
ファイルをアップロードする。以下コマンドはftpでアップロードするのと同様のことを実行する。
-Tの後にアップロードするファイルを指定。
$ curl -T image01.jpg -u userid:password ftp://ftp.example.com/images/
ユーザ名とパスワードは以下のようにURLに含めて記述することも可能。
$ curl -T image01.jpg ftp://name:passwd@example.com/images/
以下コマンドはexample.comのディレクトリストアを取得する。
$ curl ftp://name:passwd@example.com/
-d オプションでフォームを送信する。
$ curl -d ID=userid -d PW=password http://www.hoge.com/login.php
-IオプションでHTTPヘッダーを取得する。
Webサーバのバージョンなどある程度の情報を取得できるが、表示される情報はサーバ側の設定次第。
(バージョンは、常識的にWebサーバを構築するなら大概隠蔽するだろう)
以下は”Server: gws”となっているが、普通ここに”Apache”などがでる。
$ curl -I http://google.com/
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Sun, 04 Apr 2010 15:20:49 GMT
Expires: Tue, 04 May 2010 15:20:49 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
ベーシック認証のページにアクセスする時。”- -basic”オプションもあるが省略可能で、
-uだけでもいけるようだ。
ftpの時と同様に、ユーザIDとパスワードをコロンで区切って指定。
# curl -u username:password http://www.example.com/member/
SSL接続で証明書のエラーをスキップさせたかったら-k オプションを使う。
# curl -k https://www.example.com/
他のオプション一部。他にももっと沢山あるのだが、、、いいかげんもう寝たい。
-v サーバとのやり取りを表示
-# プログレスバーを表示
-s 不要なプログレスメータを出力しない
-vオプションはテスト時などに指定しておくといいかも。
プログレスメータとは進行状況を表示するようなものだが、これも動作確認時
にはあった方がいいかもしれない。
以下、参考までにメモ。
cURL と libcurl を使ってインターネット経由でやりとりする
取り急ぎ今回はこれくらいで。