设备部署到现场后,研发很少能直接接触实物。远程诊断能力决定了问题能不能快速闭环。最基本的远程诊断不是远程 shell,而是能安全地导出状态、日志和配置快照。
一、远程诊断要收集什么
建议收集:
- 固件版本。
- 启动时间。
- 最近重启原因。
- 网络状态。
- MQTT 状态。
- 磁盘使用。
- 内存和进程。
- 内核日志。
- 应用日志。
- 当前配置。
这些信息能覆盖大部分现场问题。
二、support bundle
提供脚本:
1 | /usr/bin/collect_support_bundle |
输出:
1 | /tmp/support_bundle.tar.gz |
内容:
1 | system.txt |
打包前要过滤敏感信息,例如密码、token、私钥。
三、通过 MQTT 触发
可以设计命令:
1 | { |
设备执行后返回:
1 | { |
真正上传可以走 HTTP、对象存储或内网服务。
四、远程操作要有限制
远程诊断不能变成任意命令执行。
建议:
- 命令白名单。
- 参数白名单。
- 操作审计日志。
- 限制调用频率。
- 需要授权 token。
- 不返回敏感文件。
生产环境不要直接开放远程 shell 作为常规诊断手段。
五、现场维护模式
可以设计维护模式:
- 默认关闭 SSH。
- 通过授权命令临时开启。
- 超时自动关闭。
- 开启和关闭都记录日志。
这样兼顾安全和维护效率。
六、诊断验收
一台设备异常时,远程应该能拿到:
1 | 版本 |
如果这些都拿不到,问题定位会非常依赖现场人员口述。
- 本文链接: https://blog.hansong.icu/2026/06/26/Embedded_Linux_Series_23_Remote_Diagnostics/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。