Como devo definir a variável de proxy HTTP para trabalhos agendados?

2

Eu tenho um script python que preciso executar a partir do crontab, roteando todo o tráfego através de um proxy HTTP.

Já defini o proxy em /etc/profile usando

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

É claro que isso funciona bem se eu executar o myscript.py do terminal, mas ao adicionar o trabalho ao crontab, ele volta a usar o IP do servidor padrão na execução.

Qual é a maneira mais segura de garantir que o proxy seja usado por qualquer script python executado a partir do cron? Eu encontrei uma menção de adicionar

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

para o topo do crontab. Isso parece funcionar ao testar com um script python simples para executar ping em um site de verificação de IP, mas é a maneira mais segura?

Não há documentação sobre isso além de um post antigo que encontrei.

    
por mburnatacu1980 07.09.2017 / 17:09

1 resposta

1

Esse segundo exemplo parece a coisa certa a fazer, mas você deve alterar os nomes das variáveis para minúsculas, como esperam as bibliotecas HTTP.

A página de manual para o formato de arquivo crontab (por exemplo, crontab(5) - não crontab(1) ) diz:

An active line in a crontab will be either an environment setting or a cron command. The crontab file is parsed from top to bottom, so any environment settings will affect only the cron commands below them in the file. An environment setting is of the form,

      name = value

Então é exatamente que você define as variáveis de ambiente para suas tarefas agendadas.

Note também que, se pretende ser uma configuração de todo o sistema (suponho que seja, dada a sua referência a /etc/profile ), então

On the Debian GNU/Linux system, cron supports the pam_env module, and loads the environment specified by /etc/environment and /etc/security/pam_env.conf. It also reads locale information from /etc/default/locale.

Se o seu cron estiver configurado de forma semelhante, pode fazer sentido mover seus padrões de /etc/profile para /etc/environment .

    
por 07.09.2017 / 17:21