纯 Shell (Bash) 实现的 Linux 运维管理工具箱,通过交互式菜单统一管理常见服务器运维操作,支持多发行版自动适配与模块化扩展。
- 无需安装额外服务,开箱即用(仅依赖 Bash ≥ 4.0 与常见系统命令)
- 自动识别操作系统、CPU 架构、包管理器、systemd 支持
- 支持 Ubuntu / Debian / CentOS / Rocky Linux / AlmaLinux / OpenEuler 等主流发行版
- 模块化设计,公共逻辑统一管理,易于扩展
- 危险操作二次确认,关键修改自动备份
- 操作日志记录(时间 / 用户 / 命令 / 结果)
- 批量远程运维:支持服务器选择、免密配置、多命令连续执行
linux-ops-toolbox/
├── toolbox.sh 主程序(交互菜单 + --remote/--version/--help)
├── remote.sh 批量远程运维(服务器选择 / 免密 / 多命令连续执行)
├── .gitignore
├── lib/
│ ├── color.sh ANSI 颜色与 info/warn/error/ok/section 输出
│ ├── logger.sh 日志记录(自动建 logs/,支持过期清理)
│ ├── os_detect.sh 系统环境检测 + 多发行版安装/卸载/查版本
│ └── utils.sh 通用工具(确认、输入、root 校验、SSH/防火墙操作)
├── config/
│ ├── config.conf 全局配置(日志、Docker 镜像、SSH 用户/端口等)
│ ├── server-list.example.txt 批量服务器列表模板
│ └── server-list.txt 批量服务器列表(已忽略,请从模板复制)
└── modules/
├── system/
│ ├── info.sh 系统信息(总览/CPU/内存/磁盘/版本/负载)
│ └── optimize.sh 系统优化(内核参数/ulimit/BBR/Swap/时间/清理/一键)
├── user/
│ ├── user_manager.sh 用户管理菜单
│ ├── user_functions.sh 用户操作公共函数
│ ├── add_admin.sh 创建管理员用户
│ └── delete_user.sh 删除用户
├── software/
│ └── software_manager.sh 软件安装/卸载/版本检测/刷新源
├── service/
│ └── service_manager.sh 常用服务管理(nginx/openresty/mysql/redis/docker/ssh)
├── docker/
│ ├── install.sh Docker 安装(官方脚本 + 镜像加速)
│ └── manage.sh Docker 容器/镜像/日志/清理
└── security/
├── security_menu.sh 安全加固菜单
├── ssh.sh SSH 加固/端口/root/密码 开关与解锁
├── firewall.sh 防火墙配置(ufw/firewalld/iptables 自适应)
├── fail2ban.sh Fail2ban 安装/状态/解封
└── security_common.sh 安全模块公共函数
# 1. 复制服务器列表模板(可选,批量运维用)
cp config/server-list.example.txt config/server-list.txt
# 服务器列表每行一个目标,支持 user@host 逐台指定账号:
# 192.168.1.10 # 使用 config.conf 中 SSH_USER(默认 root)
# didton@192.168.1.11 # 使用 didton 账号登录
# 2. 启动交互菜单
./toolbox.sh主菜单:
1. 系统信息
2. 用户管理
3. 软件管理
4. 服务管理
5. Docker 管理
6. 安全加固
7. 系统优化
8. 批量运维(远程)
0. 退出
./toolbox.sh --help # 帮助
./toolbox.sh --version # 版本
./toolbox.sh --remote <命令> # 批量在远程服务器执行内置批量动作:
./toolbox.sh --remote passwordless # 配置所有服务器免密登录(首次输密码)
./toolbox.sh --remote install docker # 远程安装软件(自动识别包管理器)
./toolbox.sh --remote service nginx status # 远程服务管理
./toolbox.sh --remote info # 远程系统信息
./toolbox.sh --remote 'systemctl status sshd' # 任意远端命令运行 ./toolbox.sh 后选 8,或在 toolbox 根目录直接执行 ./remote.sh:
- 显示带编号的服务器列表,可选择目标服务器:
- 回车 = 全部
2= 单台,1,3= 多台,1-3= 范围
- 连续输入多条命令,执行完自动回到命令输入:
passwordless配置免密登录(首次输入密码后安装公钥,之后无需密码)install <包>/service <服务> <动作>/info为内置动作- 其他输入按远端 shell 命令直接执行
c重新选择服务器,q退出
编辑 config/config.conf:
| 配置项 | 说明 |
|---|---|
LOG_ENABLE |
日志开关(1 开 / 0 关) |
LOG_RETENTION_DAYS |
日志保留天数,超过自动清理 |
DOCKER_MIRROR |
Docker 镜像加速地址(留空不配置) |
SSH_PORT_DEFAULT |
批量运维默认 SSH 端口 |
SSH_USER |
批量运维默认登录用户(留空用 root) |
SERVER_LIST_FILE |
批量服务器列表路径 |
SERVICE_LIST |
服务管理菜单中的服务列表 |
操作日志写入 logs/ops-YYYY-MM-DD.log,格式:
2026-08-05 14:30:00 | root | INFO | 创建用户: admin (admin=1)
2026-08-05 14:30:05 | root | INFO | 执行命令: systemctl restart nginx
2026-08-05 14:30:06 | root | INFO | 执行结果: success
lib/os_detect.sh 通过 /etc/os-release 自动识别环境并适配差异:
| 发行版 | 包管理器 | 管理员组 |
|---|---|---|
| Ubuntu / Debian | apt | sudo |
| CentOS / RHEL / Rocky / Alma / OpenEuler | dnf / yum | wheel |
| Arch | pacman | wheel |
| Alpine | apk | wheel |
新增模块步骤:
- 在
modules/下创建独立脚本(脚本内自行定位TOOLBOX_DIR并加载 lib) - 在
toolbox.sh主菜单case中注册入口 - 需要 root 的操作调用
require_root,危险操作调用confirm二次确认 - 使用
log_info/log_warn/log_error记录操作
git add -A && git commit -m "chore: release v1.0.0"
git tag v1.0.0
git push origin v1.0.0 --tags # 触发 Actions 自动发 Release
开源运维工具,仅供授权服务器使用。