Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Como passar variáveis para scripts Python em serviços Linux

#Python; #Linux; #Systemd
@CanalQb Python - Executar um script py no serviço ou incluir um argumento
@CanalQb

Como passar variáveis externas para scripts Python executados por serviços Linux

Quando você precisa executar um script Python via serviço do Linux (como um serviço systemd) e deseja passar variáveis externas para o script, a melhor prática é utilizar variáveis de ambiente definidas no próprio arquivo do serviço. Isso facilita a manutenção e evita a necessidade de modificar o código do script para cada parâmetro externo.

Configurando variável de ambiente no arquivo de serviço

No arquivo do serviço, você pode usar a opção Environment para definir variáveis de ambiente. Em seguida, a linha ExecStart pode ativar o ambiente virtual Python e executar o script, utilizando essas variáveis.

Exemplo prático

Suponha que você queira definir uma variável chamada VAR_EXTERNA com o valor valor-da-variavel e passar essa variável para o script Python /caminho/para/meu-script.py. A configuração no arquivo do serviço pode ser feita assim:

[Service]
Environment="VAR_EXTERNA=valor-da-variavel"
ExecStart=/bin/bash -c "source /caminho/para/venv/bin/activate && python /caminho/para/meu-script.py"

Ou, se preferir definir diretamente na linha ExecStart sem usar Environment:

ExecStart=/bin/bash -c "source /caminho/para/venv/bin/activate && VAR_EXTERNA=valor-da-variavel python /caminho/para/meu-script.py"

Nesse comando:

  • source /caminho/para/venv/bin/activate ativa o ambiente virtual onde está o interpretador Python.
  • VAR_EXTERNA=valor-da-variavel define a variável de ambiente para o processo Python.
  • python /caminho/para/meu-script.py executa o script Python.

Como acessar a variável no script Python

No seu script Python, para acessar o valor da variável VAR_EXTERNA definida no serviço, utilize o módulo os:

import os

var_externa = os.getenv('VAR_EXTERNA', 'valor-padrao')
print(f"Valor da variável externa: {var_externa}")

Isso garante que seu script receba o valor definido no serviço e pode usar um valor padrão caso a variável não esteja definida.

Dicas adicionais

  • Certifique-se de usar caminhos absolutos para o ambiente virtual e para o script Python no arquivo do serviço.
  • Verifique as permissões de execução e o usuário que executa o serviço para evitar problemas de acesso.
  • Ao atualizar a configuração do serviço, lembre-se de recarregar o daemon com systemctl daemon-reload e reiniciar o serviço com systemctl restart nome-do-serviço.

Recursos oficiais e referências

Para mais informações sobre serviços Linux com systemd e variáveis de ambiente, consulte a documentação oficial do systemd.

Para detalhes sobre como usar ambientes virtuais e variáveis em Python, veja a documentação oficial do Python os.getenv.

Para vídeos tutoriais relacionados, acesse o canal oficial: @CanalQb

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo