curl 便利ですよね。毎日のように使います。プログラミングなしでWEBアクセスやSCPアクセスができるので重宝します。
ページをファイルに保存 curl -o name URL
標準出力ではなくローカルへ自由なファイル名で保存するには-oオプションで。
$ curl -o my.jpg http://www.example.com/top.jpg
-O(オーの大文字)オプションの場合
-O (大文字)はURL上のファイル名で保存する。
$ curl -O http://www.example.com/images/photo1.jpg
この場合 http://www.example.com/ のように、ファイル名が無いURLに使うと、ファイルが作成されないことに注意。
POST送信 -d オプション。
フォームの送信と同様な事をCurlでする。POSTの送信。この場合は application/x-www-form-urlencodedに相当する。
curl -d name=takuya -d hatena_id=takuya_1st http://example.com/oauth.php
-d KEY=VALUE を重ねて書けばいい 。
POSTデータは、POST本文にGET引数と同じものを key=value&key1=value2&key2=value2 と続けて書く感じですね。詳しくはapplication/x-www-form-urlencodedについて知っておきましょう。
サーバーのHTTPヘッダー情報取得 curl -I URL
私はこれを一番良く使います。ヘッダー情報を閲覧することでサーバーになるのがいい。
takuya@air:~/Desktop$ curl -I mixi.jp HTTP/1.1 200 OK Date: Wed, 21 Nov 2012 05:55:22 GMT Server: Apache X-Dealer: 151060 Cache-Control: no-cache Pragma: no-cache X-XRDS-Location: https://mixi.jp/xrds.pl X-UA-Compatible: IE=EmulateIE7 Vary: Accept-Encoding Content-Type: text/html; charset=EUC-JP Set-Cookie: _lcp=cb3e60b072c4cd530997c605e3012dd8; domain=.mixi.jp; path=/; expires=Wed, 21-Nov-2012 06:05:22 GMT X-Content-Type-Options: nosniff Connection: close
リダイレクトの確認に、ヘッダー情報閲覧
curl -I オプションでヘッダーを見るのに一番重要なのがヘッダーの閲覧。正しくリダイレクトされているかが特に重要
takuya@air:~/Desktop$ curl -I https://google.com HTTP/1.1 301 Moved Permanently Location: https://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Wed, 21 Nov 2012 05:56:03 GMT Expires: Fri, 21 Dec 2012 05:56:03 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 220 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN
BASIC 認証のページにアクセスする。 curl -u
これは通常のURL埋め込みでもいいようです
curl -u username:password http://www.example.com/member/ curl -basic username:password http://www.example.com/member/ curl http://username:password @www.example.com/member/
証明書エラーが出るんだけど。 curl -k URL
SSL接続で証明書のエラーをスキップさせたかったら-k オプションを使う。
curl -k https://www.example.com/
一時的に使うんであればいいんではないでしょうか。
サーバーとのコネクション
サーバーとのコネクションやり取りを表示する。
takuya@air:~/Desktop$ curl -v mixi.jp * About to connect() to mixi.jp port 80 (#0) * Trying 110.44.179.198... * connected * Connected to mixi.jp (110.44.179.198) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 > Host: mixi.jp > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 21 Nov 2012 06:02:43 GMT < Server: Apache < X-Dealer: 232035 < Cache-Control: no-cache < Pragma: no-cache < X-XRDS-Location: https://mixi.jp/xrds.pl < X-UA-Compatible: IE=EmulateIE7 < Vary: Accept-Encoding < Content-Type: text/html; charset=EUC-JP < Set-Cookie: _lcp=fe0211c7f24909f35704108cfc568532; domain=.mixi.jp; path=/; expires=Wed, 21-Nov-2012 06:12:43 GMT < X-Content-Type-Options: nosniff < Connection: close < Transfer-Encoding: chunked <
ファイルをFTPアップロードする。
以下コマンドはftpでアップロードするのと同様のことを実行する。
curl -T banner.jpg -u username:password ftp://ftp.example.com/static/imgs/
-Tの後にアップロードするファイルを指定。
別の書き方
ユーザ名、パスワードはURL書式に含めてしまってもいい。
curl -T banner.jpg -u ftp://username:password@ftp.example.com/static/imgs/
証明書エラーは無視する。
証明書エラーは無視する
curl -k https://example.com/
no-check-certificate はないので、 -k