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 zenity
für diesen Zweck, obwohl mir Ersteres aus ästhetischen Gründen (ja, das ist manchmal wichtig ;-)) besser gefällt.
Zenity-Alternative:
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:
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:')