# IP地址池可视化系统 **Repository Path**: zzdx713320/ip-pool-visualizer ## Basic Information - **Project Name**: IP地址池可视化系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-07-13 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IP 地址池可视化管理系统 v3.0.0 > 内网 IP 地址管理工具,支持 ICMP 扫描检测、ARP 辅助判断、子网管理和可视化统计。 ## 功能 - **子网管理**:CIDR 格式添加/删除/修改子网 - **IP 网格地图**:每个子网 IP 以颜色区分状态(已用 / 离线 / 各种时间段的离线 / 闲置 / 冲突) - **ICMP 扫描**:系统 ping 命令检测在线状态,支持并发扫描 - **ARP 备选**:网络设备 ARP 表辅助判断(可选) - **仪表盘统计**:全局和各子网的使用率、在线/离线分布 - **设备管理**:可配置 SSH 网络设备自动采集 ARP 表 ## 技术栈 | 层 | 技术 | |----|------| | 后端 | Python 3.11 + FastAPI + SQLAlchemy + SQLite | | 前端 | Vue 3 + Vite + Pinia + TailwindCSS | | 部署 | systemd 服务 / 快速启动脚本 | | 打包 | 自带 Python 运行时,解压即用 | ## 快速开始 ### 离线包部署(推荐,无需联网) 下载 `ip-pool-visualizer-*.tar.gz`,解压即用: ```bash tar xzf ip-pool-visualizer-*.tar.gz cd ip-pool-visualizer-* ./run.sh ``` 首次运行会自动解压 Python 运行时并安装依赖。访问 `http://服务器IP:8000`。 ### 注册为系统服务 ```bash sudo ./install.sh ``` 之后通过 systemd 管理: ```bash systemctl start ip-pool systemctl stop ip-pool systemctl restart ip-pool journalctl -u ip-pool -f ``` ### 开发环境 ```bash # 后端 cd backend pip install -r requirements.txt uvicorn main:app --reload --port 8000 # 前端 cd frontend npm install npm run dev ``` ## 项目结构 ``` ├── backend/ │ ├── app/ │ │ ├── api/ # API 路由 │ │ │ ├── subnets.py # 子网 CRUD │ │ │ ├── ips.py # IP 查询 │ │ │ ├── scan.py # 扫描控制 │ │ │ ├── stats.py # 统计数据 │ │ │ └── devices.py # 网络设备管理 │ │ ├── services/ │ │ │ ├── scanner.py # ICMP 扫描引擎 │ │ │ ├── arp_scanner.py # 本地 ARP │ │ │ └── network_devices.py # SSH 设备采集 │ │ ├── models/ │ │ │ ├── models.py # SQLAlchemy ORM │ │ │ └── schemas.py # Pydantic 校验 │ │ ├── utils/ │ │ │ └── ip_utils.py # IP 工具函数 │ │ └── core/ │ │ └── database.py # 数据库连接 │ └── main.py ├── frontend/ │ ├── src/ │ │ ├── components/ # Vue 组件 │ │ ├── stores/ # Pinia 状态 │ │ ├── api/ # API 请求 │ │ └── App.vue │ └── dist/ # 编译产物 ├── package.sh # 离线包打包脚本 └── README.md ``` ## 扫描逻辑 每次扫描对每个 IP 执行以下判断: | 条件 | 结果 | 说明 | |------|------|------| | ping 通 | **已用** | 记录 `last_seen` | | ping 不通 + ARP 有 MAC | **离线** | 设备在线但不响应 ping | | ping 不通 + `last_seen` 有值 | **离线** | 之前在线,这次挂了 | | ping 不通 + `last_seen` 为空 | **未用** | 从未在线过 | 可通过 `journalctl -u ip-pool | grep -E '\[ONLINE\]|\[OFFLINE|\[UNCHANGED\]'` 查看每条 IP 的判断日志。 ## 打包 ```bash # 需要先准备好 Python 运行时 cp python-build-standalone.tar.gz /tmp/python-runtime.tar.gz # 编译前端 cd frontend && npm run build && cd .. # 打包 bash package.sh 1.0.0 ``` 打包脚本会自动处理 greenlet 兼容性(降级到 manylinux2014 以兼容 CentOS 7.6)。 ## 环境要求 ### 离线包部署 - CentOS 7.6+ / 任何 glibc >= 2.17 的 Linux - 无需安装 Python、pip、Node.js - 62MB 磁盘空间 ### 开发环境 - Python 3.11+ - Node.js 18+ - npm