跳转到主要内容

一个简单的命令行工具,用于与KeePassX数据库交互

项目描述

https://github.com/rebkwok/kpcli/workflows/Run%20tests/badge.svg

kpcli

一个简单的命令行工具,用于与KeePassX数据库交互。

KeePassX是一个跨平台密码管理应用程序。它作为MacOSX、Linux和Windows的GUI应用程序以及Android应用程序(KeePassDroid)提供,使其能够在多个设备上管理密码。

功能

  • 查看详情:列出组和条目,获取单个条目的详细信息
  • 从命令行添加新条目和更改密码
  • 解决冲突:用户可以选择将KeePassX数据库保存在中央位置,例如Dropbox或其他同步软件。如果从多个设备打开并更新数据库,将生成“冲突副本”。kpcli避免了这些冲突,并提供了比较冲突副本并确定冲突所在位置的实用程序。

安装

使用pip

pip安装kpcli

从源代码

git clone https://github.com/rebkwok/kpcli.git
cd kpcli
poetry install  # pip install poetry first if necessary

配置

kpcli将首先在环境变量中查找数据库配置,然后是在config.ini文件中。

(加密的)数据库密码可以通过在config.ini文件中将STORE_ENCRYPTED_PASSWORD设置为True或在环境变量中设置来存储。kpcli将一次性提示输入密码,然后每隔24小时提示一次。

注意:风险自负!如果真的想的话,可以在config.ini文件或环境变量中将KEEPASSDB_PASSWORD以明文形式设置。如果没有找到KEEPASSDB_PASSWORDkpcli将提示输入它。

配置文件

在 $(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 将尝试在环境变量 KEEPASSDBKEYPASSDB_KEYFILEKEYPASSDB_PASSWORD 中查找配置(如果找不到,将提示输入密码)。

有关更详细的用法,请使用下面列出的任何 kpcli 命令的 --help

用法

$ kpcli [OPTIONS] COMMAND [ARGS]...

选项

  • -p, --profile TEXT:指定要使用的配置文件 [默认:default]
  • --loglevel TEXT:[默认:INFO]
  • --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 将提示选择。密码复制默认超时时间为 5 秒(通过在 config.ini 中设置 KEEPASS_TIMEOUT 来更改)

$ kpcli cp comm/email
Entry: Communications/my email
Password copied to clipboard; timeout in 5 seconds
Press any key to clear clipboard and exit: 


$ kpcli cp comm/email username
Entry: Communications/my email
username copied to clipboard
从条目复制用户名和密码到剪贴板

首先复制用户名,然后等待按键,然后复制密码。

$ kpcli cp comm/email both
Entry: Communications/my email

Username 'me@myemail.com' copied to clipboard
Press any key to copy password: c

Password copied to clipboard; timeout in 5 seconds
Press any key to clear clipboard and exit: 
添加条目
$ kpcli add

kpcli 将提示输入必填字段。

更改密码
$ kpcli change-password comm/email

kpcli 将提示输入新密码。

比较冲突的数据库

在下面的示例中,kpcli 找到要比较的一个冲突数据库。
标题为 "entry1" 的条目位于 "blue" 组的冲突数据库中,但在主数据库中不存在。
条目 "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 ║
╚════════════╧═════════════╧════════════════════╝

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

kpcli-0.5.0.tar.gz (26.2 kB 查看哈希值)

上传时间

构建分发版

kpcli-0.5.0-py3-none-any.whl (26.7 kB 查看哈希值)

上传时间 Python 3

由以下支持