# 敦敏自动化工具 **Repository Path**: didi/ldm ## Basic Information - **Project Name**: 敦敏自动化工具 - **Description**: 敦敏自动化工具 V2.4 是一个轻量级的自动化运维工具,专为简化批量远程操作而设计,支持执行脚本、检查主机状态、使用命令模板和处理ZIP文件。与Ansible相比,晓阳工具更加轻量、易于部署和使用,特别适合中小规模的运维场景。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-29 - **Last Updated**: 2026-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 敦敏自动化运维工具 V2.4 ## 项目简介 敦敏自动化工具 V2.4 是一个轻量级的自动化运维工具,专为简化批量远程操作而设计,支持执行脚本、检查主机状态、使用命令模板和处理ZIP文件。与Ansible相比,敦敏工具更加轻量、易于部署和使用,特别适合中小规模的运维场景。 ### 与Ansible的对比优势 | 特性 | 敦敏自动化工具 | Ansible | |------|----------------|---------| | 部署难度 | 极低(仅需Python环境) | 中等(需要安装完整Ansible) | | 配置复杂度 | 简单(CSV文件配置) | 复杂(YAML语法,Inventory配置) | | 学习曲线 | 平缓(直观的命令行界面) | 较陡(需要学习Playbook语法) | | 轻量性 | 极轻量(核心代码<1000行) | 重量级(完整功能套件) | | 定制性 | 高度可定制(模块化设计) | 可定制(需要编写插件) | | 执行速度 | 快速(简化的执行流程) | 较慢(完整的执行引擎) | ### 核心特点 - **轻量无依赖**:仅依赖Python和少数第三方库,不依赖sudo和sshpass - **模块化设计**:代码结构清晰,易于扩展和维护 - **配置灵活**:支持通过配置文件自定义各种参数 - **健壮可靠**:具有完善的错误处理和重试机制 - **详细报告**:自动生成Markdown格式的执行报告 - **安全检查**:内置高危命令检测功能 - **主机状态检查**:支持批量检查主机网络、SSH认证和系统信息 - **命令模板**:支持使用预定义模板执行常用操作 - **ZIP文件处理**:支持上传、解压和执行ZIP文件 - **SFTP独立认证**:支持SSH和SFTP使用不同的认证凭据 ### 项目命名由来 本工具以"敦敏"命名,取自开发者女儿的名字,寓意着工具如清晨的阳光般温暖、可靠,为运维工作带来光明和便利。 ## 项目结构 ``` ops_bachSh/ ├── main.py # 主程序入口 ├── ops_tool/ # 工具模块目录 │ ├── config/ # 配置管理模块 │ ├── hosts/ # 主机管理模块 │ │ └── status_checker.py # 主机状态检查模块 │ ├── security/ # 安全管理模块 │ ├── ssh/ # SSH执行模块 │ │ └── zip_executor.py # ZIP文件执行模块 │ └── utils/ # 工具函数模块 │ ├── template_manager.py # 命令模板管理模块 │ └── zip_manager.py # ZIP文件管理模块 ├── ops_tool.conf # 配置文件 ├── command_templates.conf # 命令模板配置文件 ├── requirements.txt # 依赖声明文件 ├── test_hosts.csv # 测试主机文件 ├── test_script.sh # 测试脚本文件 └── README.md # 项目文档 ``` ## 安装方法 ### 1. 创建并激活虚拟环境 ```bash # 创建虚拟环境 python3 -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ## 配置选项 ### 1. 基本配置 (`ops_tool.conf`) 工具使用 `ops_tool.conf` 文件进行配置,支持以下选项: #### SSH 配置 ```ini [SSH] # 远程脚本上传目录(默认:/tmp/tmp_ops_tool) remote_dir = /tmp/tmp_ops_tool # SSH连接超时时间(秒,默认:10) ssh_timeout = 15 # 命令执行超时时间(秒,默认:30) command_timeout = 45 # 失败重试次数(默认:1) retry_count = 2 ``` #### 高危命令配置 ```ini [DangerousCommands] # 高危命令规则,格式:规则名称 = 正则表达式 rm_root = rm\s+-rf\s+\/ rm_all = rm\s+-rf\s+\* reboot = reboot shutdown = shutdown ``` ### 2. 命令模板配置 (`command_templates.conf`) ```ini # 命令模板配置文件 # 格式:[Template:模板名称] # command=命令内容 # description=模板描述 # 变量使用:{{变量名}} [Template:check_disk] command=df -h description=检查磁盘使用情况 [Template:check_service] command=systemctl status {{service_name}} description=检查指定服务状态 ``` ## 使用方法 ### 1. 执行脚本模式 ```bash python3 main.py <分组名称> ``` **示例**: ```bash python3 main.py test_hosts.csv test_group test_script.sh ``` ### 2. 主机状态检查模式 ```bash python3 main.py --check-status <分组名称> ``` **示例**: ```bash python3 main.py --check-status test_hosts.csv test_group ``` ### 3. 命令模板模式 ```bash python3 main.py --template <分组名称> <模板名称> [变量1=值1] [变量2=值2]... ``` **示例**: ```bash # 检查磁盘使用情况 python3 main.py --template test_hosts.csv test_group check_disk # 检查指定服务状态 python3 main.py --template test_hosts.csv test_group check_service service_name=ssh # 查看日志文件 python3 main.py --template test_hosts.csv test_group check_logs lines=20 log_file=/var/log/syslog ``` ### 4. ZIP文件执行模式 ```bash python3 main.py --zip <分组名称> ``` **示例**: ```bash python3 main.py --zip test_hosts.csv test_group check_echo.zip ``` **说明**: - 上传并解压zip文件到服务器 - 解析zip文件中的`launcher_man.ini`配置文件 - 执行配置文件中指定的脚本 - 支持`launcher_sh`和`launcher_script`两种配置参数格式 ### 5. 查看可用命令模板 ```bash python3 main.py --list-templates ``` ### CSV文件格式 CSV文件需要包含以下列: ``` ip,username,password,root_password,group,port,sftp_username,sftp_password,sftp_port 192.168.1.1,user1,password1,rootpass1,web_servers,22,root,rootpass,22 192.168.1.2,user2,password2,rootpass2,db_servers,2222,,, ``` - `ip`:主机IP地址 - `username`:登录用户名 - `password`:登录密码 - `root_password`:root密码(仅兼容,不使用) - `group`:主机分组 - `port`:SSH端口(可选,默认22) - `sftp_username`:SFTP用户名(可选,默认与SSH用户名相同) - `sftp_password`:SFTP密码(可选,默认与SSH密码相同) - `sftp_port`:SFTP端口(可选,默认与SSH端口相同) ## 功能特性 ### 1. 模块化设计 - **config**:配置管理,负责加载和解析配置文件 - **hosts**:主机管理,负责从CSV文件加载主机信息 - **hosts/status_checker**:主机状态检查,负责检查主机网络、SSH认证和系统信息 - **security**:安全管理,负责检测脚本中的高危命令 - **ssh**:SSH执行,负责远程连接、文件上传和命令执行 - **ssh/zip_executor**:ZIP文件执行,负责在服务器端处理zip文件的上传、解压、解析和执行 - **utils**:工具函数,提供Markdown报告生成等功能 - **utils/template_manager**:命令模板管理,负责加载和执行命令模板 - **utils/zip_manager**:ZIP文件管理,负责本地zip文件的验证和解析 ### 2. 主机状态检查功能 - **网络连通性检查**:检查主机网络端口是否可达 - **SSH认证检查**:检查SSH用户名和密码是否正确 - **系统信息检查**:获取主机OS、CPU、内存、磁盘等信息 - **批量检查**:支持同时检查多台主机状态 - **详细报告**:生成详细的状态检查报告 ### 3. 命令模板功能 - **预定义模板**:内置多种常用命令模板 - **自定义模板**:支持通过配置文件添加自定义模板 - **模板变量**:支持在模板中使用变量,提高灵活性 - **批量执行**:支持在多台主机上执行相同的模板命令 - **高危命令检查**:对模板命令进行安全检查 ### 4. 健壮的文件上传机制 - **双模式上传**:优先使用SFTP上传,失败时自动切换到SSH命令上传 - **目录自动创建**:自动创建远程目录(如果不存在) - **文件保留**:上传的脚本文件会保留在远程服务器上,不自动删除 ### 5. 完善的错误处理 - **连接错误**:自动处理SSH连接失败的情况 - **上传错误**:SFTP失败时自动尝试SSH命令上传 - **执行错误**:详细记录命令执行失败的原因 - **重试机制**:支持失败后自动重试 ### 6. 详细的执行报告 执行完成后,工具会自动生成Markdown格式的执行报告,包含: - 执行时间和摘要 - 主机执行结果详情 - 高危命令检测结果 - 执行统计信息 ### 7. 安全检查 工具会在执行前检查脚本或模板命令中的高危命令,并提示用户确认是否继续执行,支持的高危命令包括: - 删除根目录或所有文件的命令 - 系统重启或关机命令 - 格式化磁盘命令 - 其他危险操作 ### 8. ZIP文件执行功能 - **自动上传**:自动上传zip文件到服务器指定目录 - **智能解压**:在服务器端自动解压zip文件 - **配置解析**:解析zip文件中的`launcher_man.ini`配置文件 - **脚本执行**:执行配置文件中指定的脚本 - **双重配置**:支持`launcher_sh`和`launcher_script`两种配置参数格式 - **详细报告**:生成详细的执行报告 ### 9. SFTP独立认证功能 - **分离认证**:支持SSH和SFTP使用不同的认证凭据 - **灵活配置**:通过CSV文件配置SFTP用户名、密码和端口 - **自动切换**:当配置了SFTP独立认证时,自动使用SFTP凭据进行文件操作 - **权限管理**:使用SFTP凭据确保正确的文件权限设置 - **兼容性**:当未配置SFTP独立认证时,默认使用SSH认证凭据 ## 命令模板列表 ### 系统管理 - **check_load**:检查系统负载情况 - **check_users**:查看当前登录用户 - **check_memory**:检查内存使用情况 - **check_disk**:检查磁盘使用情况 - **check_cpu**:检查CPU使用情况 ### 服务管理 - **start_service**:启动指定服务 - **stop_service**:停止指定服务 - **restart_service**:重启指定服务 - **check_service**:检查指定服务状态 ### 日志管理 - **check_logs**:查看日志文件末尾内容 - **search_logs**:在日志中搜索关键词 - **check_syslog**:查看系统日志 ### 文件操作 - **check_file_size**:检查指定文件大小 - **list_directory**:查看目录内容 - **find_file**:查找指定模式的文件 ### 网络管理 - **check_network**:检查网络连接和监听端口 - **ping_host**:测试与目标主机的网络连通性 - **check_connections**:检查网络连接状态 ### 应用管理 - **check_nginx**:检查Nginx配置和状态 - **check_mysql**:检查MySQL服务状态 - **check_process**:检查指定进程 ### 安全管理 - **check_ufw**:检查防火墙状态 - **check_ssh_config**:检查SSH配置 ### 更新管理 - **update_system**:更新系统软件包 - **check_updates**:检查可用更新 ## 日志记录 工具会生成详细的日志信息,便于调试和问题排查: - SSH连接和命令执行日志 - 文件上传日志 - 错误处理日志 - 状态检查日志 ## 常见问题 ### 1. 文件上传失败 如果遇到"Channel closed"错误,工具会自动尝试使用SSH命令上传文件,这是一种正常的容错机制。 ### 2. 连接超时 如果遇到连接超时问题,可以在配置文件中增加`ssh_timeout`值。 ### 3. 命令执行超时 如果脚本执行时间较长,可以在配置文件中增加`command_timeout`值。 ### 4. 高危命令警告 如果脚本或模板命令中包含高危命令,工具会提示用户确认是否继续执行,这是一种安全保护机制。 ### 5. root用户无法登录 如果root用户无法登录,可能是因为SSH配置文件禁止了root用户密码登录。可以修改`/etc/ssh/sshd_config`文件,将`PermitRootLogin`设置为`yes`,然后重启SSH服务。 ## 扩展建议 1. **添加更多配置选项**:可以根据需要在配置文件中添加更多选项 2. **增加支持的认证方式**:可以考虑添加密钥认证支持 3. **添加并行执行功能**:可以考虑使用线程池实现并行执行,提高效率 4. **增加更多报告格式**:可以考虑添加HTML、JSON等其他格式的报告 5. **添加更多命令模板**:根据实际需求添加更多常用命令模板 6. **增加主机分组管理**:支持更复杂的主机分组和管理 ## 版本历史 - **V2.4**:正式发布,添加ZIP文件执行模式和SFTP独立认证功能 - 新增`--zip`命令模式,支持上传、解压和执行zip文件 - 支持解析zip文件中的`launcher_man.ini`配置文件 - 支持`launcher_sh`和`launcher_script`两种配置参数格式 - 新增SFTP独立认证功能,支持SSH和SFTP使用不同的认证凭据 - 通过CSV文件配置SFTP用户名、密码和端口 - 优化文件权限管理,使用SFTP凭据确保正确的文件权限设置 - **V2.3**:添加配置管理功能,支持自定义上传目录和超时时间 - **V2.2**:添加主机状态检查和命令模板功能 - **V2.1**:优化错误处理机制,提高代码健壮性 - **V2.0**:添加日志记录功能,便于调试和问题排查 - **V1.0**:重构为模块化设计,提高代码可扩展性 - **V0.1**:初始版本,实现基本功能 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。