代码之家  ›  专栏  ›  技术社区  ›  Mrgr8m4

如何在python脚本中隐藏sql plus密码

  •  0
  • Mrgr8m4  · 技术社区  · 6 年前

    我创建了截断Oracle表的python脚本。我使用SQL Plus,但问题是我现在必须隐藏纯文本的密码。我有这样的论点:

    db_name = "DB_NAME"
    db_user = "DB_USER"
    db_password = "DB_PASS"
    

    然后我运行如下命令:

    sqlplus_delete_table = 'echo "TRUNCATE TABLE ' + db_user + '.' + table + ' DROP STORAGE;"'
    sqlplus_connection = db_user + '/' + db_password + '@' + db_name
    os.system(sqlplus_delete_table + ' | sqlplus -s ' + sqlplus_connection)
    

    一切正常,但问题是密码。如我所知,SQL Plus不使用JCEKS文件。那么隐藏密码的其他解决方案是什么呢?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Anselmo Blanco Dominguez    6 年前

    你可以使用像Django的解决方案 SECRET_KEY ,存储在不在项目存储库中的文件中。我从这个文件中加载了这样的键 settings.py 以下内容:

    with open(os.path.join(ROOT_DIR, 'etc/secret_key.txt')) as f:
        SECRET_KEY = f.read().strip()
    

    在上面的示例中,文本文件的内容只是关键,但您可以使用结构化格式(如JSON、YAML,甚至是python文件)并导入它。

    python秘密文件示例:

    # secret.py
    DB_PSSWD='pswd'
    DB_USER='user'
    

    在源代码中,只需:

    import secret
    
    print(DB_USER)
    

    yaml秘密文件示例:

    # secret.yaml
    db_psswd: pswd
    db_user: user
    

    在源代码中,只需:

    import yaml
    
    with open('secret.yaml') as yaml_secret:
        rules = yaml.load(cfg)
    print(rules['db_user'])
    
        2
  •  1
  •   koPytok    6 年前

    在Linux上,可以创建bash脚本,如:

    # sql.env
    export db_PSSWD='pswd'
    export db_USER='user'
    

    在运行python之前,运行bash脚本初始化环境变量:

    source sql.env
    

    然后,在 python 以下内容:

    db_psswd = os.environ.get("db_PSSWD")
    db_user = os.environ.get("db_USER")