#命令行工具 #设备 # #物联网 #应用 #实例 #drogue

应用 drg

一个用于与 drogue-cloud 实例交互的命令行工具

14 个版本 (8 个破坏性更新)

0.11.0 2022年11月17日
0.10.2 2022年7月13日
0.9.0 2022年6月1日
0.8.1-alpha12022年1月25日
0.3.0 2021年3月30日

#997 in 命令行工具

Download history 20/week @ 2024-04-01 1/week @ 2024-04-22

54 每月下载量

Apache-2.0

165KB
4K SLoC

Release (latest SemVer) Build Matrix

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 中的资源交互,目前支持 appsdevices 操作。以下操作被处理:

  • 创建
  • 删除
  • 编辑
  • 获取
  • 列出

创建资源

# 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_CONTEXTDRG_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