纯 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/时间/清理/一键)
│ └── maintain.sh 系统维护监控(登录日志清理/网速测试/CPU 温度监控)
├── 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. 批量运维(远程)
9. 系统维护监控
0. 退出
./toolbox.sh --help # 帮助
./toolbox.sh --version # 版本
./toolbox.sh --remote <命令> # 批量在远程服务器执行
./toolbox.sh --maintain <动作> # 系统维护监控(日志清理/网速/CPU 温度)内置批量动作:
./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退出
主菜单选 9,或用命令行统一入口(合并了原 cleanup_syslogs.sh / netspeed.sh / monitor_cpu_temp.sh):
./toolbox.sh --maintain cleanup # 清理登录日志(备份后清空,每种保留 3 份)
./toolbox.sh --maintain cleanup dry # 仅预览,不做任何改动
./toolbox.sh --maintain netspeed # 测默认网卡
./toolbox.sh --maintain netspeed all 5 # 测所有网卡,采样 5 秒
./toolbox.sh --maintain cputemp # 采集一次 CPU 温度并按阈值告警
./toolbox.sh --maintain cron install # 自动写入定时任务 (root crontab)
./toolbox.sh --maintain cron status # 查看定时任务状态
./toolbox.sh --maintain cron remove # 移除定时任务- 登录日志清理:备份
/var/log/wtmp、/var/log/btmp、/var/log/lastlog(faillog存在时一并处理)到/var/backups/login-logs,随后原地清空,每种日志最多保留LOG_CLEAN_BACKUP_COUNT份。需要 root。 - 网速测试:基于网卡字节计数采样计算上下行速率,支持默认网卡 / 指定网卡 / 全部网卡 / 连续测速。
- CPU 温度监控:每次采集写入温度日志,最近
CPU_TEMP_WINDOW次中超过CPU_TEMP_THRESHOLD℃ 达到CPU_TEMP_ALERT_COUNT次即告警(含进程/负载/内存),并按冷却策略重启(交互模式会先确认)。
主菜单选 9 → 4. 定时任务部署,或直接执行 ./toolbox.sh --maintain cron install,会以 root 身份幂等写入 crontab:
# >>> Linux OPS Toolbox maintain >>>
# 由 Linux OPS Toolbox 自动生成/更新, 请勿手动编辑本块
0 18 * * * <工具箱目录>/toolbox.sh --maintain cleanup >> /var/log/cleanup_syslogs_cron.log 2>&1
*/5 * * * * <工具箱目录>/toolbox.sh --maintain cputemp >> /var/log/cpu_temp_cron.log 2>&1
# <<< Linux OPS Toolbox maintain <<<- 重复执行会自动更新(先按标记块移除旧任务再写入),不会产生重复条目
- 写入前自动备份现有 crontab 到
backup/crontab.bak.<时间戳> cron status查看当前任务,cron show预览将要写入的内容,cron remove卸载- 计划时间可在
config/config.conf中通过CRON_CLEANUP_SCHEDULE/CRON_CPUTEMP_SCHEDULE调整
需要 root 权限;cron 下无交互,温度达到告警条件时会真实重启。测试时可临时覆盖:
DRY_RUN=1跳过重启,TEST_TEMP_C=70伪造温度。
编辑 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 |
服务管理菜单中的服务列表 |
LOG_CLEAN_* |
登录日志清理:备份份数 / 备份目录 / 清理对象等 |
NETSPEED_INTERVAL |
网速测试默认采样秒数 |
CPU_TEMP_* |
CPU 温度监控:阈值 / 窗口 / 告警次数 / 日志路径等 |
CRON_CLEANUP_SCHEDULE / CRON_CPUTEMP_SCHEDULE |
定时任务计划(crontab 表达式) |
操作日志写入 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
开源运维工具,仅供授权服务器使用。