![Execute um script Bash do Python e importe as variáveis de ambiente exportadas para o Python](https://rvso.com/image/192219/Execute%20um%20script%20Bash%20do%20Python%20e%20importe%20as%20vari%C3%A1veis%20%E2%80%8B%E2%80%8Bde%20ambiente%20exportadas%20para%20o%20Python.png)
Eu tenho o seguinte script Bash chamado Test_Vars.sh
#!/bin/bash
#----------------------------------------------------#
# Environment Variables being used in the process #
#----------------------------------------------------#
export CLUSTER=cluster-test.cloud
export USERNAME=puser
export PASSWORD=$(echo "bXlQYXNzd29yZAo=" | base64 -d)
echo "CLUSTER: $CLUSTER"
echo "USER: $USERNAME"
echo "PASS: $PASSWORD"
Agora meu script Python chamado test.py que chama os scripts Bash é o seguinte
#!/usr/bin/env python3
import os
home_dir = os.environ['HOME']
username = os.environ['USER']
print("User " +username +" home Directory is " +home_dir)
from subprocess import call
RC = call("/disk/home/roachd/Scripts/Test_Vars.sh")
cluster = os.environ['CLUSTER']
username = os.environ['USERNAME']
password = os.environ['PASSWORD']
print("Print Variables exported by Bash script Test_Vars.sh")
print("Cluster: " + CLUSTER)
print("User: " + USERNAME)
print("PD: " + str(PASSWORD))
Agora, quando executo o script Python, obtenho o seguinte resultado:
User roachd home Directory is /disk/home/roachd
CLUSTER: cluster-test.cloud
USER: puser
PASS: myPassword
Traceback (most recent call last):
File "test.py", line 12, in <module>
cluster = os.environ['CLUSTER']
File "/usr/lib64/python3.6/os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'CLUSTER'
Qualquer ajuda seria muito apreciada.
Responder1
Sim... Você não pode fazer isso. Somente processos CHILD têm acesso às variáveis de ambiente de um processo PARENT. Você pode definir as variáveis de ambiente para um novo processo filho (dependendo de como você o inicia). O padrão são as próprias variáveis do pai.
De um filho existente, você obtém um número inteiro que representa o valor do status de retorno e pode examinar a saída. No seu script, você imprime as variáveis. Em python, você pode ler a saída para obter esses valores.