82 行
2.7 KiB
Markdown
82 行
2.7 KiB
Markdown
# linux_controller
|
||
|
||
基于 Flask + Paramiko 的 Linux 服务器批量监控与开关机控制面板(PC / 移动端自适应)。
|
||
|
||
## 功能
|
||
|
||
- 定时(60 秒)通过 SSH 采集各服务器 `top` 指标:CPU / 内存 / 负载 / 任务状态等
|
||
- Web 页面展示服务器状态,支持远程关机 / 重启(带二次确认弹窗)
|
||
|
||

|
||
|
||
## 快速开始
|
||
|
||
### 1. 配置服务器列表
|
||
|
||
复制 `.env.example` 为 `.env`,填写 `SERVERS_JSON`(JSON 数组,包含 name / ip / username / password)。
|
||
`.env` 已被 `.gitignore` 忽略,**切勿提交真实凭据**。
|
||
|
||
### 2. 本地运行
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
Linux / macOS:
|
||
|
||
```bash
|
||
export SERVERS_JSON='[{"name":"demo","ip":"192.168.1.10","username":"root","password":"your-password"}]'
|
||
python app.py
|
||
```
|
||
|
||
Windows PowerShell:
|
||
|
||
```powershell
|
||
$env:SERVERS_JSON='[{"name":"demo","ip":"192.168.1.10","username":"root","password":"your-password"}]'
|
||
python app.py
|
||
```
|
||
|
||
### 3. Docker 运行
|
||
|
||
在项目根目录 `.env` 文件中配置 `SERVERS_JSON` 后:
|
||
|
||
```bash
|
||
docker compose up -d --build
|
||
```
|
||
|
||
访问 `http://<主机IP>:8090/`(PC 端)、`http://<主机IP>:8090/m`(移动端)。
|
||
|
||
## 安全建议(部署前必读)
|
||
|
||
- **切勿将服务直接暴露在公网**:本应用未内置登录认证与 CSRF 防护,任何能访问到它的人都可以远程关机 / 重启受控服务器。请仅部署在内网,并通过防火墙、VPN 或反向代理(BasicAuth 等)做访问控制。
|
||
- 服务器凭据一律通过环境变量注入,不要写回代码或提交到仓库。
|
||
- 代码中 `AutoAddPolicy()` 会自动接受未知主机指纹,存在中间人风险;对安全要求较高的环境请改为 `RejectPolicy` 并预置 known_hosts。
|
||
- 建议 SSH 使用密钥认证代替密码认证。
|
||
- 生产环境保持 `FLASK_DEBUG` 关闭(默认已关闭)。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
linux_controller/
|
||
├── app.py # 主程序:Web 服务 + 状态采集 + 控制接口
|
||
├── templates/ # 页面模板(index.html PC 端 / m.html 移动端)
|
||
├── test.py # SSH 连接测试脚本(凭据同样从环境变量读取)
|
||
├── requirements.txt # Python 依赖
|
||
├── Dockerfile # 容器构建
|
||
├── docker-compose.yml # 编排配置
|
||
├── send.sh # 部署传输脚本
|
||
└── .env.example # 环境变量配置模板
|
||
```
|
||
|
||
## 安全漏洞
|
||
|
||
发现安全漏洞请勿提交公开 Issue,参见 [SECURITY.md](SECURITY.md)。
|
||
|
||
## 贡献
|
||
|
||
欢迎提交 Issue 与 Pull Request,贡献流程参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
||
|
||
## 许可证
|
||
|
||
本项目基于 [MIT License](LICENSE) 开源。
|