命令行

功能描述

执行命令,例如 "ls" 命令,会返回执行命令的返回。如果时间执行命令时间过长,超过 10s,则该进程会被停止,并且返回 500 错误。

另外,会根据 sessionId 字段匹配,如果在 5 分钟内使用相同的 session id 则会使用上次的路径继续作为当前路径,否则为默认的 home 目录。

1. 请求消息

1.1 topic

topic示例:/v1/devices/DGRI20239999/device/command

Topic
/v1/devices/{DeviceSn}/device/command

消息发送方

物联网平台

消息接收方

网关设备

1.2 请求消息payload

数据域
数据类型
是否必选
描述

mid

stirng

消息ID,推荐使用uuid, 请求和应答匹配,用来匹配请求和应答消息和去重

msgTime

string

消息发送时间戳,RFC3339标准,例如:1985-04-12T23:20:50.52Z

zone

string

设备部署的区域,例如ZONE3

node

string

设备部署的节点,例如440000

requestId

string

微服务链路追踪用的标识

deviceSn

string

设备ESN码,用于唯一标识设备

deviceId

string

统一物联网平台分配的设备id,据说可能会重复,不能唯一标识设备

service

string

服务名称。这里固定为:deviceManageService

cmd

string

具体操作方法,这里固定为:actionCommand

params

object

[可选]对象内容

params结构体说明

字段名

必选/可选

类型

参数描述

command

必选

string

具体可执行的系统命令

sessionId

必选

string

用于保存一系列命令中的上下文,这个上下文只包括了工作目录,默认第一次为home目录。同一sessionId两次命令不超过5分钟,超过后认为是新的sessionId另外,如果command执行时间过长,超过 10s,则会认为超时。

请求示例

{
    "mid": "70005fee-4d6e-11ee-be56-0242ac1204444",
    "msgTime": "2023-07-06T15:06:38Z",
    "zone":"设备部署的区域",
    "node":"设备部署的节点",
    "requestId":"requestId1",
    "deviceSn": "DGRI20239999",
    "deviceId": "A1234456",
    "service": "diagnostics",
    "cmd": "actionCommand",
    "params": {
        "command": "uname -a",
        "sessionId": "70005fee-4d6e-11ee-be56-0242ac1204444"
    }
}

2. 应答消息

2.1 Topic

Topic
/v1/devices/device/response

消息发送方

网关设备

消息接收方

物联网平台

2.2  应答消息payload

数据域
数据类型
是否必选
描述

mid

string

消息ID,用于消息去重。

replyId

string

表示响应的是哪条请求指令,为该指令的mid,用来匹配请求和应答

msgTime

string

消息发送时间戳,采用RFC3339标准,例如:1985-04-12T23:20:50.52Z。

zone

string

设备部署的区域,例如ZONE3

node

string

设备部署的节点,例如440000

requestId

string

微服务链路追踪用的标识

deviceSn

string

设备ESN码,用于唯一标识设备

deviceId

string

统一物联网平台分配的设备id,据说可能会重复,不能唯一标识设备

code

uint16

标识应答的返回码

批处理请求时,如果所有处理都成功,返回200

如果有部分失败,返回400。

取值如下:

•100:指令接收成功,等待执行完成。

•200:请求成功。

•400:请求消息错误,例如消息格式错误等。

•404:不支持该操作。

•429:请求太多。

•500:服务端内部错误,由应用定义。

body

object

(可选)对象内容。

body结构体说明

字段名

必选/可选

类型

参数描述

result

必选

String

操作的响应信息,可能会受mqtt消息包大小的限制,可能对result的长度有限制

应答示例

{
    "mid": "6554132",
    "replyId": "54132"
    "code": 200,
    "body": {
        "etc         lib32       node_file   rom         srv         userdata\nbin         home        lib64       opt         root        sys         usr\ndata        init        linuxrc     overlay     run         test-learn  var\ndev         lib         mnt         proc        sbin        tmp         www"
    }
    "zone":"设备部署的区域",
    "node":"设备部署的节点",
    "deviceSn": "D23pigXo",
    "deviceId": "A1234456",
    "requestId":"xxxxxxxxxx",
    "msgTime": "1985-04-12T23:20:50.52Z"
}

最后更新于