如何從 shell 使用以下密碼提示對話框? (侏儒)

如何從 shell 使用以下密碼提示對話框? (侏儒)

在此輸入影像描述

如何從需要提示輸入密碼的 shell 腳本觸發上述對話方塊?

我已經遇到並用於zenity此目的,儘管出於美學原因我更喜歡前者(是的,有時這很重要;-)。

禪宗替代方案:

在此輸入影像描述

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

Ubuntu 20.04、GTK、GNOME

答案1

我知道這篇文章已經發布了近 6 個月,但沒有人建議使用 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“確定”和“取消”按鈕。在此範例中,可以從變數 $password 存取輸入的密碼,例如

echo $password

如果按下取消按鈕,則 yad 的回傳碼 ($?) 為 1(來自 --button=gtk-cancel:1),按下 OK 按鈕時回傳碼為 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:')

相關內容