Estoy tratando de escribir un script que solicite la contraseña de usuario para algunos sudo
comandos relacionados. Mi objetivo es emular el método predeterminado que usa OS X para obtener la contraseña del usuario, Password:
seguido de un símbolo similar a una llave, como se ve en la captura de pantalla adjunta a continuación:
Intenté la respuesta de Cómo obtener una contraseña de un script de shell sin hacer eco en Stack Overflow que usa read -s
, pero eso da como resultado que Password:
no tenga el símbolo de clave cuando se ejecuta desde un script , pero muestra el símbolo cuando se ejecuta desde la Terminal. ¿Qué es este símbolo de llave? ¿Puedo encontrarlo en el menú Caracteres?
Obtengo el símbolo de la llave cuando ejecuto read -s
en Terminal.
Como esto parece funcionar igual read -s
para sudo
, asumo que esta es una característica de Terminal (para mostrar un símbolo de llave cada vez que se solicita una entrada en modo silencioso/oculto).
La respuesta más simple es simplemente escribir el script sin Sudo.
luego dígale al usuario que lo ejecute con sudo, por ejemplosudo script
el script se ejecutará con privilegios de root
`esto tiene la ventaja de que el usuario sabe lo que pide y donde se usa la contraseña, si en tu script puedes estar sacando una copia o dejándola en memoria
sudo
. Pido disculpas si no estaba claro.Creo que tiene algo que ver con si la opción de eco del terminal está deshabilitada. Intenté ejecutar stty -echo; cat; stty echo
en mi terminal y luego escribir algo, y apareció el símbolo de la llave. Luego presioné Ctrl+ Dy desapareció.
sin ladera
read -s
Terminal, así que asumo que en realidad es una característica de bash. Tal vez una mirada al código fuente ( opensource.apple.com/source/bash/bash-99/bash-3.2/builtins/… ) podría dar más pistas.quizásquizásharry
read -s
configurado correctamente en mi script. ¡Gracias por tu ayuda!quizásquizásharry
sin ladera