¿Cómo puedo utilizar el siguiente cuadro de diálogo que solicita contraseña desde el shell? (GNOMO)

¿Cómo puedo utilizar el siguiente cuadro de diálogo que solicita contraseña desde el shell? (GNOMO)

ingrese la descripción de la imagen aquí

¿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 zenitypara ese propósito, aunque me gusta más el primero por razones estéticas (sí, eso a veces importa ;-).

Alternativa Zenity:

ingrese la descripción de la imagen aquí

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:

Yad captura de pantalla

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:')

información relacionada