色々と便利なcurlコマンドですが、この間複数のパラメーターを持つURLを指定していてハマったのでメモしておきます。
あと備忘録としてによく使うコマンドオプションもまとめておいて後で確認できる様にしとこう・・・φ(..)メモメモ
複数パラメーターのGETリクエストはエスケープが必要
この事がすっかり頭に無くて
curl http://hogehoge.com/hoge.php?list=3&view=4&req=true
こんな感じでcronに登録していたらパラメーターが足りないまま実行されてしまってコケていました^^
「&」の所はエスケープしないと正常に動かないと言うことで上の例の場合だと
curl http://hogehoge.com/hoge.php?list=3\&view=4\&req=true
この様にバックスラッシュ(\)を付けて登録することで正常に動くようになります。
参考:curl - Crontab cron job will not run with url with parameter - Stack Overflow
curlコマンドでよく使うオプション
オプションの詳しい情報はこちらのサイトを参照 cURL - How To Use (マニュアルページ日本語訳)
- -d, --data PARAM
POSTリクエストとしてフォームを送信する。パラメータPARAMは「"value=name"」の形式 - -e, --referer
URL リファラーをURLで指定する - -f, --fail
サーバエラーが発生したら黙って終了する - -i, --include
HTTPヘッダを出力に含める - -m, --max-time
TIME 最大転送時間をTIME秒に制限する - -o FILE
取得したデータを指定したファイルFILEに出力する - -s, --silent
進捗状況やエラーを表示しない - -u USER[:PASS]
認証に用いるユーザー名USER, パスワードPASSを指定する(基本認証など) - -v, --verbose
処理状況の更なる詳細や説明を出力させます。 - -x HOST[:PORT]
プロキシサーバとしてホストHOSTおよびポートPORTを利用 - -y, --speed-time
TIME 転送速度が指定した速度をTIME秒の間下回ったらダウンロードを終了する。速度は-Yオプションで指定 - -A, --user-agent
AGENT ユーザーエージェントAGENTを指定 - -H, --head
HEADER HTTPヘッダにHEADERを追加もしくは変更する - -I, --head
ヘッダ情報を取得する - -O, --remote-name
取得したデータを標準出力ではなくファイルに出力する - -R, --remote-time
ダウンロードしたファイルのタイムスタンプをサーバ上のタイムスタンプに合わせる - -L, --location
要求したページにリダイレクトが掛かっていた場合に追従する。この時要求がPOSTメソッドだった場合GETに変えられてしまうので変えられたくない場合は--post301, --post302, --post303等のオプションを併用する。
とりとめのないまとめ
様々なパラメーターを指定することで色々な使いみちのあるcurlですが、色々出来過ぎるので中々全てのオプションを覚える・・・とはいきませんね・・・。
その都度調べてその都度新しい発見があるコマンドです^^