我试图从应用程序中删除所有密码和密码。
为此,我使用了环境变量。我想避免将这些特定内容放入~/.bashrc
或其他内置文件中。调用导出所需变量的特定脚本是理想的。
原因是环境变量包含密码,我试图将它们隔离在除设置环境变量的环境脚本之外的所有代码之外。
总结所需的流程:
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
环境变量本身,它们包含所有敏感的环境信息。
答案 0 :(得分:3)
有一种更简单的方法。只需提供一个包装器脚本来设置环境变量,然后调用主脚本。
使用envdir
实用程序很方便。如果由于某种原因无法使用它,请使用os.environ
直接设置env vars,并将主脚本作为子进程生成。