如何从终端中的密钥环获取密码以便在脚本中使用?
当您的计算机中有LUKS
加密驱动器时, Nautilus
或Nemo
会在“ Devices
下将其显示为带有一点锁定的驱动器。
单击它时,需要输入密码。 如果您选择remember this password forever
,则会将其保存到您的密钥环中。 下次启动,单击驱动器将立即安装它。
如何从终端“立即安装”密码环中存储密码的驱动器? 我希望有一个自动启动脚本,当我登录时将挂载我的LUKS驱动器。我不想在脚本中存储我的密码,我想使用密钥环中的密码:
如果你去Passwords And Keys
,有一堆无名密钥。 在他们的属性中,您可以找到类似gvfs-luks-uuid=xxxxxxxxxxxx
以及该LUKS驱动器的密码。 这就是Ubuntu使用的。
我想到的一个选项是python-gnomekeyring
但它只能获取密钥和密码。 我需要GUI调用“技术细节”来获取特定uuid
的密码,因为keyname始终为空。
您可以使用secret-tools来存储和检索密钥环中的密码。
要存储新密码:
secret-tool store --label='Password for mydrive' drive mydrive
我让你检查钥匙圈它是如何出现的。 要查找它(可以在脚本中轻松插入此命令):
secret-tool lookup drive mydrive
我认为唯一的答案是通过python
,但有两个错误使事情变得困难。
- 您需要手动提供密钥名称 (Seahorse:Descriptions),因为在python版本中无法识别其他应用程序使用的详细信息。 我在这里创建了一个错误报告: https : //bugs.launchpad.net/ubuntu/+source/gnome-python-desktop/+bug/1144781
- 在LUKS键的特定情况下,这些描述在Seahorse中是空的,但更改空描述确实会更改键名,因此您可以在python中查找它。 我在这里创建了一个错误报告: https : //bugs.launchpad.net/ubuntu/+source/seahorse/+bug/1144703
如果您正在使用脚本和密钥环,请提及这些错误也会影响您。
- 错误1144781也影响了我
- 错误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()
如果您知道其他任何方式,例如通过简单的bash命令,请告诉我们。
使用Python Keyring Lib
它有一个方便的CLI用于shell脚本。
安装
pip install keyring
设置和获取密钥
$ keyring set system username Password for 'username' in 'system': $ keyring get system username password