|
|
@@ -20,7 +20,30 @@
|
|
|
- 客户端启动时,会连接到MQTT Broker,订阅主题:/yfkj/device/rpc/imei/ack,接收服务端的指令结果
|
|
|
|
|
|
6,总体架构图:
|
|
|
+┌────────────────────────────┐
|
|
|
+│ Shell Client │
|
|
|
+│ │
|
|
|
+│ stdin ──> JSON-RPC call │
|
|
|
+│ Ctrl+C ─> JSON-RPC notify │
|
|
|
+│ │
|
|
|
+│ prompt 显示 cwd │
|
|
|
+└──────────────┬─────────────┘
|
|
|
+ │
|
|
|
+ JSON-RPC 2.0 over MQTT
|
|
|
+ │
|
|
|
+┌──────────────▼─────────────┐
|
|
|
+│ Shell Server │
|
|
|
+│ │
|
|
|
+│ Executor (session级) │
|
|
|
+│ ├─ cwd │
|
|
|
+│ ├─ Exec(cmd) │
|
|
|
+│ ├─ Interrupt() │
|
|
|
+│ │
|
|
|
+│ process group (pgid) │
|
|
|
+│ └─ kill(-pgid, SIGINT) │
|
|
|
+└────────────────────────────┘
|
|
|
|
|
|
+6,执行流程图:
|
|
|
┌──────────────────────────────────────────┐
|
|
|
│ Remote Client │
|
|
|
│ (Web / App / CLI 运维平台) │
|
|
|
@@ -88,7 +111,8 @@
|
|
|
│ - SIGTERM → SIGKILL │
|
|
|
│ │
|
|
|
└───────────────┬──────────────────────────┘
|
|
|
- │
|
|
|
+ │ MQTT Message
|
|
|
+ | Topic: /yfkj/device/rpc/{imei}/ack
|
|
|
v
|
|
|
┌──────────────────────────────────────────┐
|
|
|
│ Linux Kernel │
|
|
|
@@ -98,12 +122,12 @@
|
|
|
│ - Exit Status │
|
|
|
└──────────────────────────────────────────┘
|
|
|
|
|
|
-7, 取消设计图:Ctrl+C
|
|
|
+8, 取消流程图:Ctrl+C
|
|
|
|
|
|
Remote Client
|
|
|
- │
|
|
|
- │ shell.execute
|
|
|
- v
|
|
|
+ │
|
|
|
+ │ shell.execute
|
|
|
+ v
|
|
|
┌───────────────┐
|
|
|
│ sshd │
|
|
|
└──────┬────────┘
|
|
|
@@ -133,9 +157,9 @@ Remote Client
|
|
|
Command Running │
|
|
|
│
|
|
|
Remote Client Ctrl+C │
|
|
|
- │ │
|
|
|
- │ shell.interrupt │
|
|
|
- v │
|
|
|
+ │ │
|
|
|
+ │ shell.interrupt │
|
|
|
+ v │
|
|
|
┌───────────────┐ │
|
|
|
│ sshd │ │
|
|
|
└──────┬────────┘ │
|