cron が実行する Wget コマンドは、対話型端末で実行する同じコマンドとは別のユーザー設定と異なる環境を読み込むことがあります。

GNU Wget 1.x では、ジョブに関係する設定を、そのアカウントが読めるファイルに置きます。

use_proxy = on
http_proxy = http://proxy.example:8080
https_proxy = http://proxy.example:8080

既存のユーザー crontab はそのファイルを明示的に指定できます。

15 3 * * * /usr/bin/wget --config=/home/reports/wget-proxy.conf --output-document=/home/reports/report.csv https://data.example/report.csv

ジョブの実行ファイル、設定、出力パス、URL を置き換えてください。絶対パスを使えば、対話型シェルの作業ディレクトリとの違いもなくなります。

既定では、Wget はグローバル起動ファイルを読み、次にユーザー起動ファイルを読みます。WGETRC は後者の場所を指定します。指定がなければ Wget は $HOME/.wgetrc を探します。したがって、スケジュールされたジョブが使う HOME とアカウントが重要です。

選択したファイルに必要なプロキシ項目を意図的に設定します。HTTP プロキシ一覧は、許可された公開プロキシ経路で公開レポートをダウンロードするための候補 URL を提供できます。root アカウントの .wgetrc は自動的に別ユーザーの設定になるわけではなく、ファイル全体をコピーすると無関係なオプションもコピーされる可能性があります。

設定が一致したら、ジョブから得られた実際の Wget エラーを保存します。プロキシ接続の拒否、407 チャレンジ、宛先の証明書エラーでは、次に取るべき手順が異なります。

関連記事