【问题标题】:python subprocess.Popen hide real "display name"python subprocess.Popen 隐藏真实的“显示名称”
【发布时间】:2012-07-09 11:10:56
【问题描述】:

我想在python中执行一个子进程,子进程需要一个参数来指定密码。默认情况下,当我的子进程运行时,每个可以登录这台机器的人都可以使用ps 实用程序获取密码。

而且我知道Popen有一个__executable__参数,可以隐藏真实的程序名,但不能隐藏子进程的密码参数。

如何隐藏我的密码?

PS:我在linux上运行。

【问题讨论】:

  • 你运行的是什么操作系统?
  • 还有什么是子进程命令:它是您可以控制它如何处理其参数的东西,还是您无法控制的现有命令?

标签: python popen


【解决方案1】:

我不认为您可以为 for 子流程执行此操作,但有一个库可以执行此操作 from 子流程:http://code.google.com/p/py-setproctitle/

该方法特定于每个操作系统;有些系统根本不支持。如果可能,通过其他方式(例如通过标准输入管道)为子进程提供密码。

【讨论】:

  • 那不会留下一个暴露密码的窗口(在创建子进程的父进程和隐藏其参数的子进程之间)?
【解决方案2】:

subprocess 没有公开 API 来执行此操作。我建议使用环境变量将密码传递给命令:

subprocess.check_call('command --password="$PASSWORD"', shell=True,
                      env=dict(os.environ, PASSWORD=password))

【讨论】:

  • 它不会达到目的——shell 的进程会屏蔽密码,但 shell 启动的真正命令会暴露它。
猜你喜欢
  • 2011-06-24
  • 2023-02-16
  • 2013-09-21
  • 2012-12-29
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多