# mqtt_shell **Repository Path**: bluetune/mqtt_shell ## Basic Information - **Project Name**: mqtt_shell - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-02 - **Last Updated**: 2025-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MQTT Shell 基于MQTT协议的远程Shell系统,允许主机通过MQTT broker控制从机执行shell命令。 ## 功能特点 - 主机端可以通过MQTT发送shell命令到从机 - 从机接收命令并在本地执行 - 执行结果通过MQTT返回给主机 - 支持实时交互式命令执行 - 支持目录跟踪功能(cd命令后记住当前路径) - 支持程序重启功能,便于维护和故障恢复 - JSON格式通信,提高数据传输可靠性 - 强大的安全特性,防止危险命令执行 ## 系统架构 ``` +-----------+ MQTT Broker +-----------+ | | <---------------------> | | | Master | | Slave | | (主机端) | <---------------------> | (从机端) | +-----------+ Command/Response +-----------+ ``` ## 新增功能 ### JSON格式通信 - 命令和响应均采用JSON格式传输,提高数据传输的可靠性和扩展性 - 支持结构化数据传输,便于后续功能扩展 - 兼容旧版纯文本格式,确保向后兼容性 ### 目录跟踪 从机端现在可以记住当前工作目录: - 执行 `cd` 命令后,后续命令将在新目录中执行 - 响应中会显示当前工作目录 - 支持相对路径和绝对路径 - 支持 `~` 表示用户主目录 ### 编码问题修复 - 修复了Windows系统上处理中文字符时的编码问题 - 现在可以正确处理包含非ASCII字符的命令输出 - 增强了跨驱动器命令执行的编码兼容性 - 支持多种编码格式(gbk, utf-8, gb2312)自动适配 - 使用二进制模式读取输出并手动解码,避免subprocess模块内部的编码错误 ### 日志记录功能 - 从机端会自动记录操作日志到本地文件 - 日志文件保存在项目根目录的 `logs` 文件夹中 - 日志按日期分割,文件名格式为 `slave_YYYY-MM-DD.log` - 日志同时输出到控制台和文件,便于实时查看和后续分析 - 记录内容包括:连接事件、命令执行、响应发送、错误信息等 ### 安全特性 - 危险命令过滤:自动拒绝执行高危命令(如 rm -rf, format 等) - 敏感路径保护:防止访问系统关键目录(如 /etc/, /root/ 等) - 命令执行超时:防止长时间运行的命令影响系统性能 - 响应长度限制:防止过大的响应数据影响网络传输 ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 方法一:分别启动(推荐用于开发和调试) 1. 启动从机端: ```bash python slave.py ``` 2. 启动主机端: ```bash python master.py ``` 3. 在主机端输入命令并查看从机的执行结果 ### 方法二:使用启动脚本(推荐用于日常使用) ```bash python start_system.py ``` 启动脚本会自动启动从机端和主机端,并管理它们的生命周期。这是推荐的日常使用方式,可以简化操作流程。 ## 配置 修改 `config.py` 文件以配置MQTT broker地址、端口、主题等参数。