Wie kann ich den folgenden Dialog zur Kennwortabfrage von der Shell aus verwenden? (GNOME)

Wie kann ich den folgenden Dialog zur Kennwortabfrage von der Shell aus verwenden? (GNOME)

Bildbeschreibung hier eingeben

Wie kann ich den obigen Dialog über ein Shell-Skript auslösen, das zur Eingabe eines Kennworts auffordert?

Ich bin bereits auf sie gestoßen und verwende sie zenityfür diesen Zweck, obwohl mir Ersteres aus ästhetischen Gründen (ja, das ist manchmal wichtig ;-)) besser gefällt.

Zenity-Alternative:

Bildbeschreibung hier eingeben

zenity --password --title="Enter private passphrase"

Ubuntu 20.04, GTK, GNOME

Antwort1

Ich weiß, dieser Beitrag ist fast 6 Monate alt, aber niemand hat vorgeschlagen, das Yad-Tool (Yet Another Dialogue) zu verwenden. So sieht es aus:

yad Screenshot

Der vollständige Befehl lautet:

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

Das Passwort wird beim Eingeben nicht auf dem Bildschirm angezeigt (das macht "--hide-text"). Die Schaltflächen sind die Standard-Gtk-Schaltflächen "OK" und "Abbrechen". In diesem Beispiel kann das eingegebene Passwort über die Variable $password abgerufen werden, z. B.

echo $password

Wenn die Abbrechen-Schaltfläche gedrückt wird, ist der Rückgabecode ($?) von yad 1 (von --button=gtk-cancel:1) und der Rückgabecode ist 0, wenn die OK-Schaltfläche gedrückt wird (von --button=gtk-ok:0).

yad kann in späteren Ubuntu-Versionen über das Software Center installiert werden, 16.04 erfordert die Installation mit:

sudo apt install yad

Die Homepage von Yad ist hier: https://sourceforge.net/projects/yad-dialog/

Weitere Beispiele zur Verwendung von Yad finden Sie hier: https://sourceforge.net/p/yad-dialog/wiki/browse_pages/

Antwort2

Ich denke, die richtige Lösung wäre die Verwendung von pinentry-gnome3. Soweit ich mich erinnere, ist es eine Abhängigkeit vongpg

askpass() {
    prompt=$1
    echo -e "SETPROMPT $prompt\nGETPIN\nBYE" | pinentry-gnome3 | grep -E '^D ' | sed 's/D //'
}

password=$(askpass 'Enter your password:')

verwandte Informationen