가상 환경에서 Python Keyring과 함께 GNOME Keyring을 사용하는 방법은 무엇입니까?

가상 환경에서 Python Keyring과 함께 GNOME Keyring을 사용하는 방법은 무엇입니까?

저는 Raspberry Pi의 백그라운드에서 실행하고 싶은 Python 스크립트를 작성했습니다. 스크립트는 Python 모듈 Keyring(협회), 스크립트에 비밀번호 입력을 제공하기 위해 키링 백엔드에 액세스하는 데 사용됩니다.

Keyring저는 OS X 키체인을 사용하는 OS X에서 스크립트를 작성했습니다 . 그러나 헤드리스 Raspberry Pi를 사용하지 않을 때는 X11백엔드 GNOME Keychain역할을 하려면 유사한 것을 설치해야 합니다.

D-Bus나는 Pypi 지침(아래 인용)을 읽었지만 Pypi 지침 과 실제로 작동시키는 방법에 익숙하지 않습니다 . 누구든지 다음을 가정하여 이를 처리하는 방법 D-bus과 방법에 대한 실제적인 예를 제공할 의향이 있습니까 ?GNOME KeyringRaspbian

  • 이 스크립트는 Raspberry의 전원이 켜져 있는 동안 항상 백그라운드에서 실행되어야 하며 crontab.
  • 스크립트는 virtualenvKeyring 모듈이 설치된 환경에서 실행되어야 합니다.
  • GNOME Keyring/ 처리 D-Bus session는 가능한 경우 자동으로 처리되며 사용자 입력 없이 키링 항목을 스크립트에 제공할 수 있습니다(예: Raspberry의 전원을 켜거나 스크립트가 실행될 때 자동으로 로드됨).

https://pypi.python.org/pypi/keyring#using-keyring-on-headless-linux-systems

헤드리스 Linux 시스템에서 키링 사용

SecretService 백엔드는 사용 가능한 X11 서버 없이 Linux 시스템에서 사용할 수 있습니다(D-Bus만 필요). 이렇게 하려면 다음이 필요합니다.

그놈 키링 데몬을 설치합니다.(참고: 나는 이미 를 통해 이 작업을 수행했습니다 apt-get.)

예를 들어 이 셸 내에서 D-Bus 세션을 시작 dbus-run-session -- sh하고 다음 명령을 실행합니다.

gnome-keyring-daemon옵션을 사용하여 실행합니다 --unlock. 옵션은 아래에 설명되어 있습니다.

표준 입력에서 비밀번호를 읽고 이를 사용하여 로그인 키링을 잠금 해제하거나, 존재하지 않는 경우 로그인 키링을 작성하십시오.

명령이 시작되면 stdin에 비밀번호를 입력하고 Ctrl+ D(데이터 끝)를 누릅니다. 그 후에 데몬은 백그라운드로 분기됩니다( --foreground이를 방지하려면 옵션을 사용하십시오).

이제 Keyring의 SecretService 백엔드를 사용할 수 있습니다. 데몬과 동일한 D-Bus 세션에서 애플리케이션을 실행하는 것을 잊지 마세요.

답변1

여전히 지침을 따르고 필요한 컨텍스트를 시작하고 실행해야 합니다. 이는 일반적으로 그래픽 셸에 로그인한 동안 수행되지만 헤드리스 시스템을 사용하므로 환경을 생성해야 합니다.

이는 로그인( 사용 ssh)하고 "헤드리스 Linux 시스템에서 키링 사용"에 지정된 대로 명령줄에서 프로그램을 실행한 다음 자신의 프로그램을 실행하거나 이 모든 작업을 수행하는 스크립트를 생성한다는 의미입니다.

프로그램을 crontab에서 시작하려면 두 번째 옵션(필요한 모든 작업을 수행하는 스크립트를 만든 다음 Python 프로그램을 시작하는 것)이 최선의 선택입니다.

검색 명령에 대해 매우 제한된 PATH를 포함하여 cron에서 스크립트를 실행할 때 환경이 다르다는 점에 유의하세요.

/path/to/your/virtualenv/bin/python setup.py install프로그램이 패키지 진입점으로 설치된 경우(즉, 이렇게 하면) virtualenv에서 실행이 자동으로 이루어집니다. 프로그램을 패키지에 넣지 않은 경우 다음과 같이 실행하세요.

/path/to/your/virtualenv/bin/python /path/to/your/main/python/prog.py

virtualenv에 설치된 모든 패키지가 실제로 사용됩니다.

Python 프로그램에 지정된 단계를 수행할 수 있어야 하지만 이는 설명과 다릅니다(셸이 있다고 가정). 따라서 이러한 문제에 대한 경험이 없는 한 저는 이러한 단계를 수행한 다음 Python 프로그램을 호출하는 쉘 스크립트를 만드는 데 집중할 것입니다.

관련 정보