web-dev-qa-db-ja.com

cronジョブのHTTPプロキシ変数を設定するにはどうすればよいですか?

HTTPプロキシ経由ですべてのトラフィックをルーティングするcrontabから実行する必要があるpythonスクリプトがあります。

/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チェッカーWebサイトにpingすることでテストするときに機能するようですが、最も安全な方法ですか?

これに関するドキュメントは、私が見つけた1つの古い投稿以外にありません。

3
mburnatacu1980

その2番目の例は正しいことのように見えますが、HTTPライブラリが期待するように、変数名を小文字に変更する必要があります。

Crontabファイル形式のマニュアルページ(つまり、crontab(5)-notcrontab(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に移動することは意味があります。

2
Toby Speight