Как использовать следующий диалог запроса пароля из оболочки? (GNOME)

Как использовать следующий диалог запроса пароля из оболочки? (GNOME)

введите описание изображения здесь

Как вызвать вышеуказанное диалоговое окно из скрипта оболочки, который должен запрашивать пароль?

Я уже сталкивался с этим и использую его zenityдля этой цели, хотя первый вариант мне нравится больше по эстетическим причинам (да, иногда это имеет значение ;-).

Альтернатива Zenity:

введите описание изображения здесь

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

Ubuntu 20.04, GTK, GNOME

решение1

Я знаю, что этому посту почти 6 месяцев, но никто не предложил использовать инструмент yad (еще один диалог). Вот как это выглядит:

скриншот yad

Полная команда:

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

Пароль не отображается на экране по мере ввода (это делает "--hide-text"). Кнопки — стандартные gtk "OK" и "Cancel". В этом примере доступ к введенному паролю можно получить из переменной $password, например

echo $password

Если нажата кнопка отмены, код возврата ($?) от yad равен 1 (от --button=gtk-cancel:1), а код возврата равен 0 при нажатии кнопки ОК (от --button=gtk-ok:0).

yad можно установить в более поздних версиях Ubuntu из Центра программного обеспечения, для версии 16.04 требуется установка с помощью:

sudo apt install yad

Домашняя страница yad находится здесь: https://sourceforge.net/projects/yad-dialog/

Другие примеры использования yad можно найти здесь: https://sourceforge.net/p/yad-dialog/wiki/browse_pages/

решение2

Я думаю, что правильным решением было бы использовать pinentry-gnome3. IIRC, это зависимостьgpg

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

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

Связанный контент