我应该如何为 cron 作业设置 HTTP 代理变量?

我应该如何为 cron 作业设置 HTTP 代理变量?

我有一个 python 脚本,需要从 crontab 运行,通过 HTTP 代理路由所有流量。

/etc/profile我已经在使用中设置了代理

http_proxy=http://192.168.0.1:3128    # (Address changed for privacy)
https_proxy=http://192.168.0.1:3128
export http_proxy
export https_proxy

当然,如果我从终端运行 myscript.py ,效果很好,但是当将作业添加到 crontab 时,它会在运行时恢复使用标准服务器 IP。

确保从 cron 运行的任何 python 脚本使用代理的最安全方法是什么?我确实发现有人提到添加

HTTP_PROXY=http://192.168.0.1:3128
HTTPS_PROXY=http://192.168.0.1:3128

到 crontab 的顶部。当使用简单的 python 脚本测试 IP 检查器网站时,这似乎有效,但这是最安全的方法吗?

除了我发现的一篇旧帖子之外,没有任何关于此的文档。

答案1

第二个示例看起来是正确的做法,但您应该将变量名称更改为小写,正如 HTTP 库所期望的那样。

crontab 文件格式的手册页(即crontab(5)-不是 crontab(1))说:

crontab 中的活动行可以是环境设置或 cron 命令。 crontab 文件是从上到下解析的,因此任何环境设置都只会影响文件中位于其下方的 cron 命令。环境设置的形式如下:

      name = value

所以那是确切地为 cron 作业设置环境变量的方法。


另请注意,如果这是一个系统范围的设置(我猜是的,考虑到您对 的引用/etc/profile),那么

在Debian GNU/Linux系统上,cron支持该模块,并加载和pam_env指定的环境。它还从 读取区域设置信息 。/etc/environment/etc/security/pam_env.conf/etc/default/locale

如果您的 cron 配置类似,则将默认值从 改为 可能是有意义/etc/profile/etc/environment

相关内容