14 个版本 (8 个破坏性更新)
0.11.0 | 2022年11月17日 |
---|---|
0.10.2 | 2022年7月13日 |
0.9.0 | 2022年6月1日 |
0.8.1-alpha1 | 2022年1月25日 |
0.3.0 | 2021年3月30日 |
#997 in 命令行工具
54 每月下载量
165KB
4K SLoC
drg : Drogue 云命令行工具
一个用于管理 drogue 云实例中应用和设备的命令行工具。
安装
从源码安装
通过 crates.io
cargo install drg
下载版本
从GitHub 发布页面下载最新版本,并将其放置在您的 $PATH
中。
注意:Debian 用户必须安装 libssl1.1
软件包。
Homebrew
brew tap drogue-iot/drg
brew install drg
Snap
sudo snap install drogue-cli
sudo snap alias drogue-cli drg
用法
登录到 drogue 云实例
为了使用 drg
管理drogue云中的资源,您首先需要认证
drg login https://drogue-cloud-api-endpoint
然后按照认证步骤操作。drg 将生成一个配置文件以保存您的配置。
您还可以使用刷新令牌进行认证,适合浏览器无法访问的情况
drg login https://drogue-cloud-api-endpoint --token <refresh_token>
管理资源
drg
与 drogue-cloud 中的资源交互,目前支持 apps
和 devices
操作。以下操作被处理:
- 创建
- 删除
- 编辑
- 获取
- 列出
创建资源
# Create an app
drg create app <appId>
# adding data
drg create app <appId> -d `{"foo":"bar"}`
# Create a device
drg create device <deviceId> --app <appId> # --app and -a are interchangeable
# Add some data
drg create device <deviceId> -a <appId> -d `{"foo":"bar"}`
读取资源
# Read an app
drg get appp <appId>
# Get a list of apps
drg get apps
# Read a device
drg get device <deviceId> --app <appId>
# Get a list of devices
drg get devices --app <appId>
注意: list
支持添加标签以过滤结果
# Get a list of devices (here all 3 labels will be applied.
drg get apps -l key=value,foo=bar --label fiz!=buz
编辑和删除资源
# edit an app - this will open an editor.
drg edit app <appId>
# update an app providing the data
drg edit app <appId> -f </path/to/json>
# Edit a device data - this will open an editor
drg edit device <deviceId> --app <appId>
# update a device providing the data
drg edit device <deviceId> -a <appId> -f </path/to/json>
# Delete an app
drg delete app <appId>
# Delete a device
drg delete device <deviceId> - <appId>
# Quickly add a gateway, credentials or alias to a device
drg set gateway foo bar # set device bar as a gateway for device foo
drg set password foo verysecret --username johndoe #username is optional here
drg set alias foo waldo # Add waldo as an alias for device foo.
向设备发送命令
# Using the context default app
drg cmd <command> <deviceId>
# Specifying the app and an opionnal payload
drg cmd <command> <deviceId> -a myApp -p '{"foo":"bar"}'
# Reading the payload from a file
drg cmd <command> <deviceId> -a myApp -f /path/to/json
配置文件
drg
将从配置文件的默认上下文加载集群设置。环境变量DRGCFG
可以指向配置文件的位置。默认的配置文件位置是$HOME/.config/drg_config.yaml
。如果没有设置环境变量,将使用此默认值。可以通过--config
参数覆盖此位置。
drg --config path/to/config create device <deviceId> --app <appId>
要获取可工作的配置文件,请运行登录到Drogue云实例
上下文管理
一个有效的配置可以包含多个上下文,使您能够轻松地在集群之间切换。要创建新的上下文,只需使用drg login
登录到集群:登录到Drogue云实例。如果这是为此配置文件创建的第一个上下文,则它将默认设置为活动状态。
要更新配置文件的活动上下文
drg context set-active <contextId>
以下是一些其他可用于管理上下文的命令
drg context show #will display the whole config file.
drg context list
drg context set-default-app <appId> #will use active context
drg context set-default-app <appId> --context <anotherContextId>
drg context delete <contextId>
drg context rename <contextId> <newContextId>
上下文和应用程序可以通过环境变量DRG_CONTEXT
和DRG_APP
设置。
信任锚管理
x.509证书可以用于在Drogue云中验证设备。为此,应用程序对象需要包含根CA证书,并且预期用户必须拥有其私钥。此证书+密钥对用于签名设备证书+密钥对。
drg create app-cert --application <appId> --key-output <path/to/app-private.key>
在这里,--key-output
是根CA私钥的输出文件,需要安全地保存和存储。
一旦设置信任锚,我们就可以使用它来签名设备证书,例如
drg create device-cert <deviceId> --app <appId> --ca-key <app-private-key> --cert_output <filename> --key-output <filename>
在这里,--ca-key
是根CA私钥文件的输入文件。--cert_output
是设备证书的输出文件。--key-output
是设备私钥的输出文件。
当设备证书被签名时,证书的通用名称将被添加到设备。因此,证书可以用于身份验证。
如果您从一开始就知道您将使用证书为设备,则可以使用`--cert标志`创建它
drg create device foo --cert
这将创建一个别名:"CN=, O=Drogue IoT, OU="为设备。
从drogue-cloud消费事件
您可以使用以下方法查看drogue-cloud应用程序的事件流
drg stream --app <appId>
# or if you have a default application set in your context :
drg stream
管理员
您可以使用admin子命令创建和管理访问令牌
drg create token
drg create token --description "some text"
drg get token
drg delete token <prefix>
Drg还可以转让应用程序所有权并管理应用程序成员
drg create member <user> --role reader --application <app>
drg get member
drg edit member
#Transfer operations
drg transfer init <newOwnerUSername> --application <appId>
drg transfer cancel
# The new owner can accept the transfer :
drg transfer accept <app>
依赖关系
~30–45MB
~886K SLoC