답변:
python-gnomekeyring 덕분에 비교적 쉽습니다.
python -c "import gnomekeyring;gnomekeyring.unlock_sync(None, 'my password');"
또는 적절한 스크립트로 :
#!/usr/bin/env python
import gnomekeyring
gnomekeyring.unlock_sync(None, 'my password');
패키지를 설치할 필요가 없다고 생각합니다. 그러나 시도하는 것은 아프지 않습니다.
하드 디스크에 암호를 저장하면 엄청난 보안 위험이 있습니다. 대신 이것을 사용해야합니다 :
#!/usr/bin/env python
import gnomekeyring
import getpass
gnomekeyring.unlock_sync(None, getpass.getpass('Password: '));
예를 들어이 스크립트를 저장 unlock-keyring.py
한 후 다음을 수행 할 수 있습니다 .
sudo mv unlock-keyring.py /usr/bin/unlock-keyring
sudo chmod a+x /usr/bin/unlock-keyring
그때부터 항상 unlock-keyring
암호를 입력 하고 입력 하라는 메시지를 표시 할 수 있습니다 . 비밀번호가 포함 된 버전으로이 작업을 수행하지 마십시오 .
None
키링 이름으로 바꿀 수 있습니다 ( 예 : 'session'
기본값이 아닌 키링 을 잠금 해제하려는 경우).
이 문제를 올바르게 테스트하는 데 어려움을 겪고 있습니다. 작동하지 않는 경우 알려 주시면 즉시 살펴 보겠습니다. 또한 작동하는지 알려주세요 :-)
이것은 확실히 작동합니다!
많은 시행 착오를 거친 후에도 이전의 훼이 패키지 "pam-keyring"에는 여전히 "pam-keyring-tool"이 포함되어 있으며 명령 줄에서 키 링의 잠금을 해제하는 데 사용할 수 있습니다. 우분투는 보안상의 이유로 feisty 릴리스 후 패키지에서 도구를 가져 왔습니다. ??
여기에 :-
wget https://launchpad.net/ubuntu/+archive/primary/+files/pam-keyring_0.0.8.orig.tar.gz
원하는 위치에 포장을 풀고 다음을 수행하십시오.
./configure
make
어떤 시점에서도 패키지를 업그레이드하지 않기 때문에 설치하지 마십시오.
그런 다음 포스트 로그인 구성 파일 rc.local을 다음과 같이 편집하십시오.
sudo gedit /etc/rc.local
exec echo ENTER_YOUR_PASSWORD_HERE | /PATH_TO_PAM_KEYRING_TOOL/pam-keyring-tool --keyring=login -u -s
exit 0
헤이 프레스토!
Stefano에게 감사합니다! 그의 대답은 반쯤 나왔지만 기본적 으로이 방법은 로컬 컴퓨터에서 파이썬 스크립트를 실행할 때만 작동한다는 것을 알았습니다. 로컬로 실행중인 경우 Gnome 키링에 액세스 할 수 있습니다. SSH 세션을 통해 스크립트를 실행할 수 있기를 원했지만 키링에 액세스 할 수 없어서 "gnomekeyring.IOerror"를 계속 받았습니다. 많은 인터넷 검색 후 해결책을 찾았습니다 @ https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-session/
이 상황을 해당 상황에 가장 적합한 부분으로 나누려면 .bashrc 스크립트에 다음을 추가하십시오.
# Export $DBUS_SESSION_BUS_ADDRESS when connected via SSH to enable access
# to gnome-keyring-daemon.
if [[ -n $SSH_CLIENT ]]; then
export $(cat /proc/$(pgrep "gnome-session" -u "$USER")/environ | grep -z "DBUS_SESSION_BUS_ADDRESS=")
fi
링크에 제공된 grep 패턴이 저에게 효과가 없다는 것은 가치가 없으므로 위의 것과 약간 다릅니다.