启动脚本以从Python导出环境变量

时间:2017-10-31 18:32:54

标签: python bash environment-variables

我试图从应用程序中删除所有密码和密码。

为此,我使用了环境变量。我想避免将这些特定内容放入~/.bashrc或其他内置文件中。调用导出所需变量的特定脚本是理想的。

原因是环境变量包含密码,我试图将它们隔离在除设置环境变量的环境脚本之外的所有代码之外。

总结所需的流程:

  1. 启动Python应用
  2. 应用程序生成设置新环境变量的过程
  3. App从先前设置的环境变量中提取值
  4. App在进一步处理中使用这些值
  5.   

    testpy.py的内容

    #!/usr/bin/env python
    
    import os
    import subprocess
    
    env_file='/tmp/env_file'
    db_pass_var='DBPASS'
    
    #execute bash script that sets the env vars
    subprocess.call([".", env_file], shell=True)
    
    #try to get the variable set and print it
    print os.getenv(db_pass, 'fail')
    
      

    / tmp / env_file

    的内容
    #!/usr/bin/env bash
    
    export DBUSER="myuser"
    export DBPASS="mypass"
    

    我尝试过各种方法,比如我在其他stackoverflow线程上找到的subprocess.Popen命令,但似乎没什么用。

    我想避免的替代方案:

    • 首先运行env_file脚本,然后启动python代码。目标是从1个应用程序运行它。

    • 将密码放入配置文件中。目标是环境变量。配置文件我想保留指向要调用的变量,而不是自己设置env变量。这是因为配置文件被检入源代码控制。我唯一想要放弃源代码控制的是实际的export环境变量本身,它们包含所有敏感的环境信息。

1 个答案:

答案 0 :(得分:3)

有一种更简单的方法。只需提供一个包装器脚本来设置环境变量,然后调用主脚本。

使用envdir实用程序很方便。如果由于某种原因无法使用它,请使用os.environ直接设置env vars,并将主脚本作为子进程生成。