2011-03-01 11 views
10

Me pregunto si hay una manera de que pueda leer la entrada de usuario de STDIN sin repetirla en la pantalla en R. Sé que readline(), readLines() y scan() pueden leer la entrada del usuario del teclado, pero ninguno parece tener una opción para no repetir el eco.Lectura de entrada de usuario sin eco

Como es de esperar, esto es para obtener una contraseña. Así que estoy buscando algo que me permita hacer:

> a<-get_password() 
Password: 
> a 
[1] "password" 
+3

No se puede hacer de forma cruzada fácilmente, la solución habitual es tcltk: http://stackoverflow.com/questions/2917202 - pero si realmente lo necesita de STDIN ... – Spacedman

+1

posible duplicado de [R: Way to de forma segura dar una contraseña a la aplicación R?] (http://stackoverflow.com/questions/2917202/r-way-to-securely-give-a-password-to-r-application) –

Respuesta

9

¿Cuál es el sistema operativo? Si puede ejecutarlo desde una terminal, esto debería funcionar.

get_password <- function() { 
cat("Password: ") 
system("stty -echo") 
a <- readline() 
system("stty echo") 
cat("\n") 
return(a) 
} 

> a <- get_password() 
Password: 
> a 
[1] "sdfs" 
> 

Esto funciona en OS X usando R desde Terminal.app, pero no desde R.app. No tengo idea de una solución de Windows, ya que no parece haber una solución R nativa.

+0

Esto es genial, en este momento Solo estoy lidiando con Mac/Linux, así que esto servirá perfectamente. ¡Gracias! –

+0

Esto también funciona en Linux (probado en Ubuntu), como se esperaba dado que es un truco basado en UNIX. –

5

Si esto es para un entorno más productivo, puede considerar usar R-Tcl/Tk, que tiene un parámetro "Mostrar" para ingresar la contraseña.

Cuestiones relacionadas