You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Python脚本传递参数时隐藏特定命令行参数

特定命令行密码参数隐藏实现方案

直接将密码作为命令行参数传递时,密码会默认出现在ps、top等进程查看工具的输出中,所有有权限查看进程列表的用户都可以读到明文密码,可通过以下几种方案解决:

方法1:通过环境变量传递(最推荐)

通过环境变量传递密码不会出现在进程参数列表中,操作最简单:

  • 首先在shell中设置环境变量,命令前加空格可以避免被写入shell历史记录:
export APP_USER_PASSWORD="你的实际密码"
  • Python脚本中直接读取环境变量:
import os

password = os.getenv("APP_USER_PASSWORD")
if not password:
    raise ValueError("未读取到有效密码,请检查环境变量配置")
  • 使用完成后可手动清理环境变量:
unset APP_USER_PASSWORD

方法2:通过权限受控的本地文件传递

将密码保存在只有当前用户可读的文件中,脚本读取后可直接删除文件,避免留存:

  • 先创建密码文件并设置严格权限:
echo "你的实际密码" > .temp_pass
chmod 600 .temp_pass
  • Python脚本读取密码:
with open(".temp_pass", "r", encoding="utf-8") as f:
    password = f.read().strip()
  • 读取完成后可直接删除临时密码文件:
import os
os.remove(".temp_pass")

方法3:启动后覆盖进程参数(仅适用于必须直接传参的场景)

如果确实必须把密码作为命令行参数传入脚本,可以在脚本启动的第一时间覆盖进程的命令行信息,缩短泄露窗口:

  • 首先安装依赖库:
pip install setproctitle
  • Python脚本中第一时间处理参数:
import sys
import setproctitle

# 假设密码是第二个命令行参数,即 sys.argv[2]
if len(sys.argv) >= 3:
    password = sys.argv[2]
    # 覆盖参数中的密码
    sys.argv[2] = "***HIDDEN***"
    setproctitle.setproctitle(" ".join(sys.argv))

注意:该方法存在极短的时间窗口,脚本刚启动还没执行到覆盖逻辑时密码仍可能泄露,非必要不使用。

内容的提问来源于stack exchange,提问作者vikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 01:48:03