与 KeePassX 数据库交互的简单命令行工具
项目描述
kpcli
与 KeePassX 数据库交互的简单命令行工具。
KeePassX是一个跨平台的密码管理应用程序。它可作为适用于 MacOSX、Linux 和 Windows 的 GUI 应用程序以及 Android 应用程序 (KeePassDroid) 使用,从而有助于跨多个设备管理密码。
特征
- 查看详细信息:列出组和条目,获取单个条目的详细信息
- 从命令行添加新条目和更改密码
- 解决冲突:用户可以选择将 KeePassX 数据库保存在中央位置,例如 Dropbox 或其他同步软件。如果从多个设备打开和更新数据库,这将导致生成“冲突副本”。 kpcli避免了这些冲突,还提供了一个实用程序来比较冲突副本并确定冲突所在。
安装
使用点子:
pip install kpcli
从来源:
git clone https://github.com/rebkwok/kpcli.git
cd kpcli
poetry install # pip install poetry first if necessary
配置
kpcli将首先在环境变量中查找数据库配置,然后在 config.ini 文件中查找。
(加密的)数据库密码可以通过STORE_ENCRYPTED_PASSWORD在 config.ini 文件中设置为 True 或作为环境变量来存储。 kpcli将提示输入密码一次,然后每 24 小时提示一次。
注意:
风险自负!KEEPASSDB_PASSWORD可以在 config.ini 文件中以纯文本形式设置,或者如果您真的想设置为环境变量。如果没有KEEPASSDB_PASSWORD找到,kpcli将提示输入。
配置文件
在 $(HOME)/.kp/config.ini 中创建一个配置文件,其中至少包含一个默认配置文件以及您的数据库位置和凭据:
[default]
KEEPASSDB=/Users/me/mypassworddb.kdbx
如果您的数据库使用密钥文件,请也提供该位置:
[default]
KEEPASSDB=/path/to/mypassworddb.kdbx
KEYPASSDB_KEYFILE=/path/to/mykeyfile.key
可以为多个数据库设置多个配置文件,并使用-p标志切换
[default]
KEEPASSDB=/path/to/db.kdbx
KEYPASSDB_KEYFILE=/path/to/mykeyfile.key
[work]
KEEPASSDB=/path/to/workdb.kdbx
默认情况下,复制到剪贴板的密码将在 5 秒后超时。要更改超时,请提供KEYPASSDB_TIMEOUT配置或环境变量。
环境变量
如果不存在 config.ini 文件,kpcli将尝试在环境变量中查找 config
KEEPASSDB,KEYPASSDB_KEYFILE并且KEEPASSDB_PASSWORD(回退到提示输入密码)。
有关更详细的用法,--help请与下面列出的任何 kpcli 命令一起使用。
用法:
$ kpcli [OPTIONS] COMMAND [ARGS]...
选项:
-p, --profile TEXT:指定要使用的配置文件[默认:默认]--loglevel TEXT:[默认:信息]--install-completion:为当前 shell 安装完成。--show-completion:显示当前 shell 的完成,复制它或自定义安装。--help:显示此消息并退出。
命令:
组名和条目标题可以作为不区分大小写的部分字符串传递以进行匹配。
ls:列出组和条目add-group: 添加一个新组rm-group: 删除组get:获取单个条目的详细信息cp: 将条目属性复制到剪贴板add: 添加一个新条目edit:编辑条目的属性(密码除外)change-password: 更改进入密码rm: 删除条目compare: 比较 KeePassX 数据库的潜在冲突副本并报告冲突
使用示例
列出组和条目
$ kpcli ls
Database: /path/to/db.kdbx
================================================================================
Groups
================================================================================
Root
Internet
Communications
...
$ kpcli ls --group comm --entries
Database: /path/to/db.kdbx
================================================================================
Communications
================================================================================
my email
work email
...
从“工作”配置文件中列出数据库中的组:
$ kpcli --profile work ls
Database: /path/to/workdb.kdbx
================================================================================
Groups
================================================================================
Root
Work
...
获取条目
按组和条目标题,用 / 分隔。注意部分匹配是允许的。
如果找到多个匹配条目,则会列出所有条目。
$ kpcli get comm/email
Database: /path/to/db.kdbx
================================================================================
Communications/my email
================================================================================
name: Communications/my email
username: my@email.com
password: **********
URL:
Notes: This is my main email address
将条目中的属性(默认密码)复制到剪贴板
如果多个条目匹配,kpcli 会提示您进行选择。
$ kpcli cp comm/email
Entry: Communications/my email
password copied to clipboard
$ kpcli cp comm/email username
Entry: Communications/my email
username copied to clipboard
添加条目
$ kpcli add
kpcli将提示输入必填字段。
更改密码
$ kpcli change-password comm/email
kpcli将提示输入新密码。
比较冲突的数据库
在下面的示例中,kpcli找到了一个要比较的冲突数据库。
“blue”组中标题为“entry1”的条目存在于冲突数据库中,但在主数据库中缺失。
条目 blue/entry2 存在于主数据库中,但在冲突数据库中缺失。
两个数据库中都存在条目 red/entry3,但用户名和密码值存在冲突。
$ kpcli compare
Database: path/to/db.kdbx
Database password:
Looking for conflicting files...
================================================================================
Comparison db: path/to/db_conflicting_copy.kdbx
================================================================================
╔════════════╤═════════════╤════════════════════╗
║ Main │ Conflicting │ Conflicting fields ║
╠════════════╪═════════════╪════════════════════╣
║ - │ blue/entry1 │ ║
╟────────────┼─────────────┼────────────────────╢
║ blue/entry2│ - │ ║
╟────────────┼─────────────┼────────────────────╢
║ red/entry3 │ red/entry3 │ username, password ║
╚════════════╧═════════════╧════════════════════╝
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。