Python에서 Bash 스크립트를 실행하고 내보낸 환경 변수를 Python으로 가져옵니다.

Python에서 Bash 스크립트를 실행하고 내보낸 환경 변수를 Python으로 가져옵니다.

Test_Vars.sh라는 다음 Bash 스크립트가 있습니다.

#!/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"

이제 내 Python 스크립트 test.py는 다음과 같이 Bash 스크립트를 호출합니다.

#!/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))

이제 Python 스크립트를 실행하면 다음과 같은 결과가 나타납니다.

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'

어떤 도움이라도 대단히 감사하겠습니다.

답변1

응... 그러면 안 돼. 하위 프로세스만 상위 프로세스의 환경 변수에 액세스할 수 있습니다. 시작 방법에 따라 새 하위 프로세스에 대한 환경 변수를 설정할 수 있습니다. 기본값은 상위 자체 변수입니다.

종료된 하위 프로세스에서 반환 상태 값을 나타내는 정수를 얻을 수 있으며 출력을 검사할 수 있습니다. 스크립트에서 변수를 인쇄합니다. Python에서는 출력을 읽어 이러한 값을 얻을 수 있습니다.

관련 정보