쉘에서 다음 비밀번호 프롬프트 대화 상자를 어떻게 사용할 수 있습니까? (금언)

쉘에서 다음 비밀번호 프롬프트 대화 상자를 어떻게 사용할 수 있습니까? (금언)

여기에 이미지 설명을 입력하세요

비밀번호를 묻는 메시지가 필요한 쉘 스크립트에서 위의 대화 상자를 어떻게 트리거할 수 있습니까?

나는 이미 그 목적으로 접하고 사용하고 있지만 zenity미학적 이유로 전자를 더 좋아합니다(예, 때로는 중요합니다 ;-).

제니티 대안:

여기에 이미지 설명을 입력하세요

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

우분투 20.04, GTK, 그놈

답변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 "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:')

관련 정보