Sync bash project
This commit is contained in:
293
README.md
Normal file
293
README.md
Normal file
@@ -0,0 +1,293 @@
|
||||
# Linux Server Toolkit (Bash)
|
||||
|
||||
> 一组面向 Linux 服务器日常运维的 Bash 工具脚本。
|
||||
> 仓库内每个子目录都是独立工具,可单独使用、单独维护。
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## 目录
|
||||
|
||||
- [项目定位](#项目定位)
|
||||
- [工具清单](#工具清单)
|
||||
- [仓库结构](#仓库结构)
|
||||
- [快速开始](#快速开始)
|
||||
- [核心工具使用示例](#核心工具使用示例)
|
||||
- [完整工具说明](#完整工具说明)
|
||||
- [依赖与兼容性](#依赖与兼容性)
|
||||
- [开发与质量检查](#开发与质量检查)
|
||||
- [常见问题](#常见问题)
|
||||
- [安全说明](#安全说明)
|
||||
- [贡献指南](#贡献指南)
|
||||
- [许可证](#许可证)
|
||||
|
||||
## 项目定位
|
||||
|
||||
这个仓库用于集中管理常见服务器管理脚本,目标是:
|
||||
|
||||
- 开箱即用:脚本直接运行,不依赖复杂框架。
|
||||
- 功能解耦:每个目录一个工具,互不耦合。
|
||||
- 运维友好:输出清晰、彩色提示、错误处理明确。
|
||||
- 可维护:脚本整体遵循统一 Bash 规范(见 `AGENTS.md`)。
|
||||
|
||||
适用场景:
|
||||
|
||||
- 新服务器初始化与巡检
|
||||
- Docker / Systemd 状态排查
|
||||
- 端口占用与服务健康检查
|
||||
- 辅助部署 FRP、OpenList、FileBrowser 等服务
|
||||
|
||||
## 工具清单
|
||||
|
||||
| 目录 | 主要脚本 | 用途 |
|
||||
|---|---|---|
|
||||
| `port-info/` | `port_info.sh` | 查看 TCP/UDP 端口与服务映射 |
|
||||
| `docker-info/` | `docker-info.sh` | 收集 Docker 和主机信息 |
|
||||
| `database-info/` | `-` | 数据库信息采集/诊断(预留,暂无脚本) |
|
||||
| `systemctl-info/` | `systemctl-info` | Systemd 全量状态与模块化诊断 |
|
||||
| `filebrowser/` | `install_filebrowser.sh` | FileBrowser 安装/卸载 |
|
||||
| `frp/` | `install_frp.sh` | FRP 安装、启停、卸载 |
|
||||
| `openlist/` | `install_openlist.sh` | OpenList 安装、启停、卸载 |
|
||||
| `mengyamonitor/` | `install_mengyamonitor.sh` | 监控探针安装/卸载 |
|
||||
| `user-manager/` | `user-manager.sh` | Linux 用户管理 |
|
||||
| `change-mirror/` | `ChangeMirrors.sh` | 系统换源与 Docker 安装辅助 |
|
||||
| `login-info/` | `login-info.sh` | 登录信息展示 |
|
||||
| `ssh/` | `*.sh` | SSH 密钥相关脚本集合 |
|
||||
|
||||
## 仓库结构
|
||||
|
||||
```text
|
||||
.
|
||||
├── AGENTS.md
|
||||
├── README.md
|
||||
├── port-info/
|
||||
├── docker-info/
|
||||
├── database-info/
|
||||
├── systemctl-info/
|
||||
├── filebrowser/
|
||||
├── frp/
|
||||
├── openlist/
|
||||
├── mengyamonitor/
|
||||
├── user-manager/
|
||||
├── change-mirror/
|
||||
├── login-info/
|
||||
└── ssh/
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1) 克隆仓库
|
||||
|
||||
```bash
|
||||
git clone <your-repo-url>
|
||||
cd bash
|
||||
```
|
||||
|
||||
### 2) 运行任意脚本
|
||||
|
||||
```bash
|
||||
# 方式 A:直接用 bash
|
||||
bash path/to/script.sh
|
||||
|
||||
# 方式 B:赋予可执行权限后运行
|
||||
chmod +x path/to/script.sh
|
||||
./path/to/script.sh
|
||||
|
||||
# 方式 C:需要管理员权限时
|
||||
sudo bash path/to/script.sh
|
||||
```
|
||||
|
||||
### 3) 推荐先做语法检查
|
||||
|
||||
```bash
|
||||
bash -n path/to/script.sh
|
||||
```
|
||||
|
||||
## 核心工具使用示例
|
||||
|
||||
### 端口信息
|
||||
|
||||
```bash
|
||||
bash port-info/port_info.sh
|
||||
```
|
||||
|
||||
输出重点:TCP/UDP 监听端口、常见服务名映射(HTTP/HTTPS/MySQL/SSH 等)。
|
||||
|
||||
### Docker 信息
|
||||
|
||||
```bash
|
||||
bash docker-info/docker-info.sh
|
||||
```
|
||||
|
||||
输出重点:容器、镜像、网络、卷,以及主机基础状态。
|
||||
|
||||
### Systemctl 诊断
|
||||
|
||||
```bash
|
||||
sudo bash systemctl-info/systemctl-info
|
||||
```
|
||||
|
||||
输出重点:
|
||||
|
||||
- Systemd 版本与状态
|
||||
- 失败服务与被屏蔽服务
|
||||
- Timer/Socket/Target/Mount/Path/Device 单元
|
||||
- 依赖关系、Journal 摘要、Cgroup、性能与电源信息
|
||||
|
||||
## 完整工具说明
|
||||
|
||||
### `filebrowser/`
|
||||
|
||||
```bash
|
||||
bash filebrowser/install_filebrowser.sh
|
||||
bash filebrowser/uninstall_filebrowser.sh
|
||||
```
|
||||
|
||||
### `frp/`
|
||||
|
||||
```bash
|
||||
bash frp/install_frp.sh
|
||||
bash frp/start_frp.sh
|
||||
bash frp/stopkill_frp.sh
|
||||
bash frp/uninstall_frp.sh
|
||||
```
|
||||
|
||||
### `openlist/`
|
||||
|
||||
```bash
|
||||
bash openlist/install_openlist.sh
|
||||
bash openlist/start_openlist.sh
|
||||
bash openlist/stopkill_openlist.sh
|
||||
bash openlist/uninstall_openlist.sh
|
||||
```
|
||||
|
||||
### `mengyamonitor/`
|
||||
|
||||
```bash
|
||||
bash mengyamonitor/install_mengyamonitor.sh
|
||||
bash mengyamonitor/uninstall_mengyamonitor.sh
|
||||
```
|
||||
|
||||
### `user-manager/`
|
||||
|
||||
```bash
|
||||
bash user-manager/user-manager.sh
|
||||
```
|
||||
|
||||
### `change-mirror/`
|
||||
|
||||
```bash
|
||||
bash change-mirror/ChangeMirrors.sh
|
||||
bash change-mirror/DockerInstallation.sh
|
||||
bash change-mirror/DockerInstallationLite.sh
|
||||
```
|
||||
|
||||
### `login-info/`
|
||||
|
||||
```bash
|
||||
# 手动查看
|
||||
bash login-info/login-info.sh
|
||||
bash login-info/login-info.sh --full
|
||||
|
||||
# 安装为 SSH 登录自动展示(写入 /etc/profile.d/)
|
||||
sudo bash login-info/install_login-info.sh # 默认 summary(推荐)
|
||||
sudo bash login-info/install_login-info.sh --mode full
|
||||
sudo bash login-info/uninstall_login-info.sh
|
||||
```
|
||||
|
||||
禁用自动展示(可选):
|
||||
|
||||
- 仅当前用户:`touch ~/.login-info-disable` 或 `export LOGIN_INFO_DISABLE=1`
|
||||
- 全局:`sudo mkdir -p /etc/login-info && sudo touch /etc/login-info/disable`
|
||||
|
||||
### `ssh/`
|
||||
|
||||
```bash
|
||||
bash ssh/alycd.sh
|
||||
bash ssh/alyxg.sh
|
||||
bash ssh/bigmengya.sh
|
||||
bash ssh/mengyathree.sh
|
||||
bash ssh/redmi.sh
|
||||
bash ssh/smallmengya.sh
|
||||
```
|
||||
|
||||
## 依赖与兼容性
|
||||
|
||||
### 基础依赖
|
||||
|
||||
- Linux(Ubuntu / Debian / CentOS 等)
|
||||
- Bash 4.0+
|
||||
- 常见系统工具:`awk` `grep` `sed` `sort` `uniq`
|
||||
|
||||
### 按工具可选依赖
|
||||
|
||||
- 端口工具:`ss` 或 `netstat`
|
||||
- Docker 工具:`docker`
|
||||
- Systemd 工具:`systemctl` `journalctl`
|
||||
- 推荐安装:`shellcheck`(静态检查)
|
||||
|
||||
## 开发与质量检查
|
||||
|
||||
仓库是 Bash 脚本项目,没有编译步骤,建议最少执行以下检查:
|
||||
|
||||
```bash
|
||||
# 语法检查
|
||||
bash -n port-info/port_info.sh
|
||||
|
||||
# 静态检查
|
||||
shellcheck port-info/port_info.sh
|
||||
shellcheck docker-info/docker-info.sh
|
||||
shellcheck systemctl-info/systemctl-info
|
||||
```
|
||||
|
||||
批量检查示例:
|
||||
|
||||
```bash
|
||||
for f in **/*.sh; do
|
||||
bash -n "$f" || exit 1
|
||||
done
|
||||
```
|
||||
|
||||
更多开发约束请参考根目录 `AGENTS.md`。
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1) 提示 `ss` 或 `netstat` 不存在
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y net-tools iproute2
|
||||
```
|
||||
|
||||
### 2) Docker 信息脚本运行失败
|
||||
|
||||
- 确认 Docker 已安装并运行:`systemctl status docker`
|
||||
- 确认当前用户有权限访问 Docker socket(或直接使用 `sudo`)
|
||||
|
||||
### 3) `systemctl-info` 信息不完整
|
||||
|
||||
- 请使用 root 权限运行:`sudo bash systemctl-info/systemctl-info`
|
||||
|
||||
## 安全说明
|
||||
|
||||
- 本仓库部分脚本会执行安装、服务管理、系统配置修改操作。
|
||||
- 请先阅读对应脚本内容,再在生产环境执行。
|
||||
- 不要在不可信环境中直接运行来源不明脚本。
|
||||
|
||||
## 贡献指南
|
||||
|
||||
欢迎提交 Issue / PR。
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 创建分支:`git checkout -b feature/your-feature`
|
||||
3. 提交修改:`git commit -m "feat: add your feature"`
|
||||
4. 推送分支:`git push origin feature/your-feature`
|
||||
5. 发起 Pull Request
|
||||
|
||||
建议在提交前运行 `shellcheck` 和 `bash -n`。
|
||||
|
||||
## 许可证
|
||||
|
||||
当前仓库未包含明确的 License 文件。
|
||||
如需开源发布,建议补充 `LICENSE`(例如 MIT / Apache-2.0)。
|
||||
Reference in New Issue
Block a user