【linux】wgetでパラメータが正常に渡らないとき
問題
wgetでURLの後ろのクエリ文字列がうまく渡らないのですがなぜでしょうか。
答え
wget と cron を使えば、指定の日時にhttpで指定のURLにアクセスさせることができる。
ところで、こんなクエリ文字列付きのURLをcrontabに書いたとき、期待したとおりにパラメータが渡らない。
0 * * * * /usr/bin/wget https://www.softel.co.jp/index.php?parameter1=xxxxxx¶meter2=yyyyyy
parameter2のパラメーターが受け渡されない。
上の例では、原因は「&」。
&(バックグラウンドで実行)、&&(最初のコマンドが正常に実行された場合に、次のコマンドを実行)、;(最初のコマンド実行後、次のコマンドを実行)、||(最初のコマンドが正常に実行されなかった場合に、次のコマンドを実行)など、コマンドラインで特別な意味がある文字列があり、URLの&があることでひとつながりのコマンドと認識されないため。
下記のようにダブルコーテーションを使用すればうまくいく。
0 * * * * /usr/bin/wget "https://www.softel.co.jp/index.php?parameter1=xxxxxx¶meter2=yyyyyy"
基本的にwgetを実行する際は、URLをダブルコーテーションで囲めば問題なしです。
★ cron に関係なく、wget単体の場合にも、& を含むURLはダブルクォーテーションで囲まないとだめです。
#cron #crontab #wget
匿名 2011年11月20日 05:17
だからできなかったんだ・・・ &が問題だったんですね。
問題が解決しました。ありがとう!
匿名 2019年5月29日 10:44
悩みに悩んで悪戦苦闘だったけど、そう言うことか…
今まで普通に動いていたのに突然だめになったからなおさら分かりにくかった。
もっと早くここに辿り着いていれば。