由 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。绝对路径还能消除与交互式 shell 工作目录之间的另一处差异。

默认情况下,Wget 先读取全局启动文件,再读取用户启动文件。WGETRC 决定后者的位置;否则 Wget 会查找 $HOME/.wgetrc。因此计划任务所用的 HOME 和账户很关键。

在所选的配置文件中刻意设置所需的代理条目。HTTP 代理列表可以为在获准的公共代理路由上公开下载报告提供候选 URL。root 账户的 .wgetrc 并不会自动成为其他用户的配置,而复制整个文件也可能把无关选项一并复制。

配置一致之后,请保留任务给出的真实 Wget 错误。代理连接被拒绝、407 质询以及目标证书错误,需要不同的后续步骤。

相关文章