¿Cómo puedo activar el cuadro de diálogo anterior desde un script de shell que necesita solicitar una contraseña?
Ya lo encontré y lo uso zenity
para ese propósito, aunque me gusta más el primero por razones estéticas (sí, eso a veces importa ;-).
Alternativa Zenity:
zenity --password --title="Enter private passphrase"
Ubuntu 20.04, GTK, GNOME
Respuesta1
Sé que esta publicación tiene casi 6 meses, pero nadie ha sugerido usar la herramienta yad (otro diálogo más). Así es como se ve:
El comando completo es:
password="$(yad --center --width=300 --image=keys.png --entry --hide-text --button=gtk-ok:0 --button=gtk-cancel:1 --title="Authentication required" --text="Enter password:")"
La contraseña no se muestra en la pantalla cuando se ingresa (el "--hide-text" hace eso). Los botones son los estándar gtk "Aceptar" y "Cancelar". En este ejemplo, se puede acceder a la contraseña ingresada desde la variable $contraseña, por ejemplo
echo $password
Si se presiona el botón cancelar, el código de retorno ($?) de yad es 1 (de --button=gtk-cancel:1) y el código de retorno es 0 cuando se presiona el botón OK (de --button=gtk-ok :0).
yad se puede instalar en versiones posteriores de Ubuntu desde el Centro de software, 16.04 requiere instalación usando:
sudo apt install yad
La página de inicio de yad está aquí: https://sourceforge.net/projects/yad-dialog/
Puede encontrar otros ejemplos que muestran cómo utilizar yad aquí: https://sourceforge.net/p/yad-dialog/wiki/browse_pages/
Respuesta2
Creo que la solución correcta sería utilizar pinentry-gnome3
. IIRC, es una dependencia degpg
askpass() {
prompt=$1
echo -e "SETPROMPT $prompt\nGETPIN\nBYE" | pinentry-gnome3 | grep -E '^D ' | sed 's/D //'
}
password=$(askpass 'Enter your password:')