![]() |
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 comsystemctl 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