मुझे स्क्रिप्ट में उपयोग के लिए टर्मिनल में कीरिंग से पासवर्ड कैसे मिलते हैं?


28

जब आपके पास LUKSआपके कंप्यूटर में एक एन्क्रिप्टेड ड्राइव होगा , Nautilusया Nemoइसे Devicesएक ड्राइव के रूप में उस पर थोड़ा लॉक के साथ दिखाया जाएगा ।

जब आप इसे क्लिक करते हैं, तो आपको एक पासवर्ड दर्ज करना होगा। यदि आप चुनते हैं remember this password forever, तो यह आपके कीरिंग में सहेजा जाता है। अगला बूट, ड्राइव पर क्लिक करने पर यह तुरंत माउंट हो जाएगा।

मैं ऐसे ड्राइव को तुरंत 'माउंट' कैसे करता हूं, जिसके लिए टर्मिनल से पासफ़्रेज़ को कीरिंग में संग्रहीत किया जाता है? मैं एक ऑटोस्टार्ट स्क्रिप्ट रखना चाहता हूं जो मेरे लॉग इन करने पर मेरी LUKS ड्राइव को माउंट करेगा। मैं स्क्रिप्ट में अपने पासफ़्रेज़ को संग्रहीत नहीं करना चाहता, मैं कीरिंग से पासफ़्रेज़ का उपयोग करना चाहता हूं:

यदि आप जाते हैं Passwords And Keys, तो बिना चाबी के एक गुच्छा है। उनके गुणों में आप gvfs-luks-uuid=xxxxxxxxxxxxउस LUKS ड्राइव के लिए विवरण और पासवर्ड भी पा सकते हैं । यह उबंटू का उपयोग करता है।

एक विकल्प जिसके बारे में मैंने सोचा था, python-gnomekeyringलेकिन यह केवल कीनेम और पासवर्ड प्राप्त कर सकता है। मुझे एक विशिष्ट के लिए पासवर्ड प्राप्त करने के लिए GUI 'तकनीकी विवरण' को कॉल करने uuidकी आवश्यकता है क्योंकि कीनेम हमेशा खाली रहता है।

जवाबों:


29

आप कुंजीयन से पासवर्ड को संग्रहीत करने और पुनः प्राप्त करने के लिए गुप्त-उपकरणों का उपयोग कर सकते हैं ।

नया पासवर्ड संग्रहीत करने के लिए:

secret-tool store --label='Password for mydrive' drive mydrive

मैं आपको कीरिंग में जांचता हूं कि यह कैसे दिखाई देता है। इसे देखने के लिए (यह कमांड आसानी से आपकी स्क्रिप्ट में डाली जा सकती है):

secret-tool lookup drive mydrive

ध्यान दें कि गुप्त से गुप्त-उपकरण यह है कि आप उदाहरणों को काम करने के लिए मूल नहीं हो सकते हैं!
पॉल फ्लिंट

1
डेड लिंक - launchpad.net/ubuntu/+source/libsecret - tl; drapt-get install libsecret-tools
मैथ्यू

9

मुझे लगता है कि एकमात्र उत्तर के माध्यम से है python, लेकिन दो कीड़े हैं जो चीजों को कठिन बनाते हैं।

  1. आपको मैन्युअल रूप से अपनी कुंजियों के नाम (सीहोरसे: विवरण) देने की आवश्यकता है क्योंकि विवरण की पहचान करना कि अन्य अनुप्रयोग उपयोग अजगर संस्करण में उपलब्ध नहीं हैं। मैंने यहाँ एक बग रिपोर्ट बनाई है: https://bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
  2. LUKS कुंजी के विशिष्ट मामले में सीहोर में ये विवरण खाली हैं, लेकिन खाली विवरण को बदलने से वास्तव में कुंजी नाम बदल जाता है ताकि आप इसे अजगर में देख सकें। मैंने यहाँ एक बग रिपोर्ट बनाई है: https://bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703

यदि आप स्क्रिप्ट्स और कीर्क्स के साथ काम कर रहे हैं, तो कृपया उल्लेख करें कि ये बग आपको प्रभावित करते हैं।

के रूप में pythonहिस्सा है, यहाँ एक उदाहरण है:

#!/usr/bin/env python

import gnomekeyring as gk

keyring = 'login'
keyItems = gk.list_item_ids_sync(keyring)

for keyItem in keyItems:
    key = gk.item_get_info_sync(keyring, keyItem)
    if  key.get_display_name() == 'KeyName you are looking for':
        # Your script here using key.get_secret()
        print "Password:", key.get_secret()

यदि आप किसी अन्य तरीके से जानते हैं, उदाहरण के लिए, साधारण बैश कमांड के माध्यम से, तो कृपया हमें बताएं।


1
एक पायथन 3 उदाहरण?
खुर्शीद आलम

2

पायथन कीरिंग लिब का प्रयोग करें

यह शेल लिपियों में उपयोग के लिए एक सुविधाजनक सीएलआई है।

स्थापना

pip install keyring

सेटिंग और चाबियाँ प्राप्त करना

$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.