2012-07-09 10 views
5

Quiero ejecutar un subproceso en python, y el subproceso requiere un argumento para especificar una contraseña. De forma predeterminada, todos los que pueden iniciar sesión en esta máquina pueden obtener la contraseña con la utilidad ps cuando se está ejecutando mi subproceso.python subprocess.Popen ocultar real "nombre de la pantalla"

Y sé que Popen tiene un parámetro __executable__, que puede ocultar el nombre real del programa, pero no puede ocultar el argumento de la contraseña del subproceso.

¿Cómo puedo ocultar mi contraseña?

PD: Me estoy ejecutando en linux.

+1

¿Qué sistema operativo está ejecutando? – hamstergene

+0

también, ¿qué es el comando de subproceso? ¿Es algo que puede controlar cómo maneja sus argumentos o es un comando existente sobre el que no tiene control? – Duncan

+0

@hamstergene linux – bones7456

Respuesta

1

No creo que se puede hacer eso para subproceso, pero hay una biblioteca para hacerlo de subproceso: http://code.google.com/p/py-setproctitle/

El método es específico para cada sistema operativo; algunos sistemas no lo admiten en absoluto. Si es posible, ingrese la contraseña al subproceso por otros medios (por ejemplo, a través de una tubería stdin).

+1

¿No dejaría eso todavía una ventana donde se expone la contraseña (entre el padre que crea el subproceso y el subproceso que oculta sus argumentos)? – Duncan

+0

@Duncan Lo hará. – hamstergene

1

subprocess no expone una API para hacer eso. Recomiendo pasar la contraseña al comando usando una variable de entorno:

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

No logrará el objetivo: el proceso del shell tendrá contraseña enmascarada, pero el comando real iniciado por el shell lo expondrá de la misma manera. – hamstergene

+0

¡No hay efecto! – bones7456

Cuestiones relacionadas