Administrator
发布于 2025-11-25 / 96 阅读
0

IP地址管理系统

IP地址管理系统 - 项目需求与实现

技术栈

  • 后端框架:Flask
  • 数据库:SQLite
  • 前端框架:Bootstrap 5.3.0
  • Excel处理:openpyxl
  • 日志记录:Python logging模块

网站目的

记录IPv4地址信息,支持地址的增删改查等管理操作。

效果展示

首页显示

  1. 可现实所有列数据
  2. 可定制显示的列数据
  3. 可导出Excel文件
  4. 可导入Excel文件
  5. 可查看或编辑IP的详细信息
  6. 可定制化搜索IP

Snipaste_2025-11-25_15-16-14-Gyyw.jpg 

编辑IP

image-20251113174714234 

实现的功能

1. 核心数据字段

IP地址记录包含以下字段:

  1. 逻辑划分:MDCN、NMS-CE03&04、BS-5GC、MW-5GC、NFV、UMF
  2. IP地址(必填,唯一)
  3. 掩码(支持点分十进制和CIDR格式)
  4. 在用:是/否(默认:是)
  5. 设备名称
  6. 所属系统
  7. 关联设备
  8. 所属科室
  9. 责任人
  10. 责任人电话
  11. 厂家责任人
  12. 厂家责任人电话
  13. 工单号
  14. 位置
  15. 是否扫描:是/否(默认:否)
  16. 更新日期:年月日(必填,默认当前日期)
  17. 备注

2. 核心功能

  • IP地址增删改查:完整的CRUD操作
  • IP地址唯一性验证:确保不会添加重复IP
  • IP地址排序:按IP地址从小到大自动排序(SQLite兼容实现)
  • 批量添加功能:输入IP地址段(如192.168.1.0/24)时,自动计算并添加所有可用IP
  • 子网掩码支持:同时支持点分十进制(如255.255.255.0)和CIDR格式(如24)
  • 自动补全功能:常用字段支持自动补全,提高录入效率
  • 分页功能:每页显示300行数据,提高大数据量下的页面加载速度
  • Excel导入导出:支持批量导出IP地址列表和从Excel文件导入数据
  • 搜索功能:支持按IP地址、设备名称、责任人、所属科室进行搜索

3. 技术实现要点

  • Bootstrap引入:使用CDN加载,无需本地文件
  • 批量IP计算:使用Python的ipaddress库计算地址段中的所有可用IP
  • 表单验证:IP地址格式验证、必填字段检查
  • 响应式设计:使用Bootstrap栅格系统,适配不同屏幕尺寸
  • 分页实现:使用SQLAlchemy的paginate方法实现数据库级分页
  • IP排序:SQLite兼容的IP地址数字排序实现(拆分IP为四个部分并转换为整数排序)
  • 日志记录:实现了请求日志和错误日志记录
  • Excel处理:使用openpyxl库实现Excel文件的导入导出功能

4. 界面功能

  • 首页:IP地址列表展示,支持分页、搜索、批量删除和批量导出
  • 添加页面:表单式添加IP地址,支持单个添加和批量添加(IP地址段)
  • 编辑页面:修改已有IP地址信息
  • 消息提示:操作结果反馈(成功/失败/警告信息)
  • Excel导入:支持从Excel文件批量导入IP地址信息
  • 动态加载:表格数据分页加载,提高大数据量下的性能

使用说明

添加IP地址

  1. 访问首页,点击"添加IP地址"按钮
  2. 填写表单信息:
    • 逻辑划分:选择合适的逻辑分组(MDCN、NMS-CE03&04、BS-5GC、MW-5GC、NFV、UMF)
    • IP地址:输入单个IP或网段(如192.168.1.0)
    • 掩码:输入点分十进制(如255.255.255.0)或CIDR格式(如24)
    • 其他信息:根据需要填写设备名称、所属系统、责任人等信息
  3. 点击"添加IP地址"按钮
  4. 如果输入的是网段,系统会自动计算并添加所有可用IP(跳过已存在的IP)

编辑IP地址

  1. 在首页找到要编辑的IP地址,点击"编辑"按钮
  2. 修改所需信息
  3. 点击"更新IP地址"按钮保存更改

删除IP地址

  1. 单个删除:在首页找到要删除的IP地址,点击"删除"按钮并确认
  2. 批量删除:在首页选择多个IP地址,点击"批量删除"按钮并确认

搜索IP地址

  1. 在首页的搜索框中输入关键词(IP地址、设备名称、责任人、所属科室)
  2. 系统会实时过滤显示匹配的结果

分页浏览

  1. 在首页底部使用分页导航栏浏览不同页面
  2. 每页默认显示300条记录
  3. 可以通过页码直接跳转到指定页面

导出Excel

  1. 在首页选择要导出的IP地址(或全选)
  2. 点击"导出到Excel"按钮
  3. 系统会生成并下载包含所选IP信息的Excel文件

导入Excel

  1. 在首页点击"导入Excel"按钮
  2. 选择要导入的Excel文件(.xlsx格式)
  3. 确保Excel文件包含必要的列:IP地址、掩码、逻辑划分
  4. 系统会自动导入文件中的IP地址信息(跳过已存在的IP)

首页显示定制

您可以通过修改代码来自定义首次打开页面时显示的列数据。所有修改都需要在 templates/index.html文件中进行:

  1. 修改表格头部列的显示状态

    • 找到文件中表格头部(大约第759-777行)的 <th>标签
    • 对于想要默认显示的列,移除其 class="hidden-column"属性
    • 例如,将"关联设备"列从隐藏改为显示:
      <!-- 修改前 -->
      <th data-column="related_device" class="hidden-column">关联设备</th> 
      <!-- 修改后 -->
      <th data-column="related_device">关联设备</th>
      
  2. 修改表格数据行列的显示状态

    • 找到文件中表格数据行(大约第783-801行)的 <td>标签
    • 对于想要默认显示的列,移除其 class="hidden-column"属性
    • 例如,将"关联设备"列的数据行从隐藏改为显示:
      <!-- 修改前 -->
      <td data-column="related_device" class="hidden-column">{{ ip.related_device or '' }}</td> 
      <!-- 修改后 -->
      <td data-column="related_device">{{ ip.related_device or '' }}</td> 
      
  3. 修改列选择模态框的默认选中状态

    • 找到文件中列选择模态框(大约第492-600行)的复选框输入元素
    • 对于想要默认显示的列,在其 <input>标签中添加 checked属性
    • 例如,将"关联设备"列的复选框默认设为选中:
      <!-- 修改前 -->
      <input class="form-check-input column-checkbox" type="checkbox" value="related_device" id="related_device"> 
      <!-- 修改后 -->
      <input class="form-check-input column-checkbox" type="checkbox" value="related_device" id="related_device" checked> 
      

注意

  • 以上三处修改需要保持一致,即如果在表格头部显示了某个列,也需要在数据行和列选择模态框中进行相应修改,以确保功能正常。
  • 当前"在用"列已经默认显示,无需修改。

项目结构

ipmanager/
├── app.py                 # 主应用程序
├── .gitignore             # Git忽略文件配置
├── LICENSE                # 许可证文件
├── README.md              # 项目说明文档
├── instance/
│   └── ip_addresses.db    # SQLite数据库文件
├── requirements.txt       # 项目依赖
├── static/
│   ├── css/
│   │   └── bootstrap.min.css
│   ├── img/
│   │   ├── IPaddress_gateway.png
│   │   └── favicon.png
│   └── js/
│       └── bootstrap.bundle.min.js
└── templates/
    ├── index.html         # 首页模板
    ├── add.html           # 添加页面模板
    └── edit.html          # 编辑页面模板

项目运行说明

1. 安装依赖

在项目根目录下执行以下命令安装所需依赖:

pip install -r requirements.txt

2. 启动应用

在项目根目录下执行以下命令启动Flask应用:

python app.py

3. 访问应用

应用启动后,可以通过以下方式访问:

  • 本地访问:http://127.0.0.1:5000
  • 局域网访问:http://[服务器IP地址]:5000(应用已配置允许外部IP访问)

4. 开发环境配置

  • 默认运行在调试模式下,可以实时查看代码修改效果
  • 数据库文件会自动创建在 instance/ip_addresses.db
  • 首次运行时会自动初始化数据库表结构和初始管理员账号

5. 初始登录信息

  • 用户名: admin123
  • 密码: admin123

注意:首次登录后建议修改密码以确保安全。

5. 停止应用

在终端中按下 Ctrl + C组合键即可停止应用