告别Excel管IP!自研轻量IP自动化运维治理工具 | Django实现扫描·巡检·资产全闭环
- 2026-09-24 12:20:37
平时做运维相关工作,总觉得IP地址管理是件“小事但巨烦”的活儿:网段多了台账乱成一锅粥,手动挨个ping盘点效率极低,核心设备离线总要等业务反馈才发现,资产变更连个操作记录都没有,出了问题根本没法追溯。
趁着空闲时间,我用Django慢慢打磨了一套轻量的IP地址自动化运维治理小工具,把「自动扫描发现 - 一键资产纳管 - 定时巡检告警 - 全量操作审计」整个流程彻底跑通。没有冗余功能,没有复杂依赖,主打一个开箱即用,专门解决中小团队IP治理的那些痛点。
一、直击运维痛点:为什么要做这套工具?
相信做网络运维的朋友都踩过这些坑:
📊 台账混乱:IP、MAC、责任人、业务系统全靠Excel维护,更新滞后,一问三不知 ⏳ 盘点低效:网段稍大一点,手动ping、扫端口就要耗掉大半天,定期盘点纯靠堆时间 🚨 发现滞后:核心设备离线了,往往要等业务侧报障才知道,被动排查非常影响业务 📝 审计缺失:IP资产增删改没人留痕,出了问题无据可查,满足不了基本审计需求
这套工具的核心目标,就是用自动化替代人工重复劳动,打造IP治理的完整闭环,把运维人员从低效的盘点里解放出来。
二、六大核心功能,覆盖IP运维全场景
✅ IP资产与网段精细化管理
作为系统的基础数据底座,完整覆盖IP资产全生命周期管理:
- 网段管理
:支持无限新增网段,维护网段地址、用途描述等信息;删除时自动校验下属IP资产,避免误删数据 - IP资产台账
:完整记录IP、MAC地址、责任人、所属业务、运行状态等核心字段,支持多条件组合搜索筛选 - 全量CRUD能力
:新增、编辑、删除、查询功能完善,表单校验完备,数据一致性有保障 

🔍 网络扫描探测引擎
整套工具的核心能力,替代人工完成网络探测:
- 单IP即时诊断
:输入目标IP一键检测,返回ICMP存活状态、端口开放信息、MAC地址与设备厂商信息,前端卡片化清晰展示结果 - 子网批量扫描
:选择目标网段自动生成IP列表,采用多线程并发扫描大幅提升效率;扫描结果后台异步写入数据库,不阻塞前端操作 - 状态直观标识
:通过Bootstrap Badge用颜色区分在线/离线、已纳管/未纳管状态,结果一目了然 
📥 一键资产录入,打通治理闭环
实现从「发现」到「管理」的流程无缝衔接,不用手动逐条录入:
扫描结果中,未纳管的IP会醒目显示【录入】按钮 点击后自动弹出表单,预填充扫描得到的MAC、端口等信息,只需补充责任人、业务描述等业务字段 提交后事务级写入资产台账,同时更新扫描记录的纳管状态,页面无刷新同步更新,实现完整流程闭环 
⏰ 自动化定时巡检,无人值守监控
支持自定义巡检策略,替代人工定期盘点,7*24小时监控资产状态:
- 巡检策略灵活配置
:可创建多条巡检策略,指定目标网段、执行周期(支持Cron表达式),一键启停 - 任务持久化调度
:基于APScheduler实现,策略启用时自动加入调度,停用时自动移除;任务存储在MySQL中,服务重启自动恢复 - 异常智能告警
:巡检时自动对比历史状态,核心资产从“在线”变“离线”时,自动记录告警日志,预留通知接口可扩展 - 巡检历史可追溯
:完整保存每次巡检记录,支持查看在线率变化趋势,直观掌握网段健康状态 

📊 可视化数据仪表盘
首页作为运维驾驶舱,核心数据一屏尽览:
核心指标卡片:总IP资产数、在线设备数、未纳管IP数、今日巡检异常数 可视化图表:资产状态占比饼图、各网段IP分布柱状图,基于ECharts实现,自适应页面尺寸 整体IP资产健康度直观呈现,运维状态一目了然 
🔐 权限控制与操作审计
满足系统安全与基础审计需求:
基于Django内置Auth模块实现用户登录、密码修改,安全可靠 分级权限控制:管理员拥有全部操作权限,普通用户仅支持查看,禁止执行扫描、修改等操作 全量操作日志:通过中间件记录所有资产变更操作,包含操作人、IP、操作内容、时间,支持多条件查询追溯 
三、技术栈选型:成熟轻量,快速落地
整套工具优先考虑开发效率与运行稳定性,全部选用成熟轻量的技术方案,没有过度技术堆砌:
⚙️ 四、核心技术实现细节
🔧 1. 扫描引擎解耦封装
单独封装scan_engine.py工具类,将扫描逻辑与业务代码完全解耦,核心实现三大能力:
check_icmp(ip):基于系统ICMP协议实现存活检测,内置超时控制,避免单个IP阻塞整体流程 get_port_info(ip):调用Nmap或Socket探测常用端口,返回开放端口列表与对应服务信息 get_mac_vendor(ip):通过ARP协议获取MAC地址,匹配厂商库返回设备厂商信息
所有方法都做了完备的异常捕获与超时处理,单个IP探测失败不会中断整体扫描任务。
⚡ 2. 多线程批量扫描优化
针对大网段扫描的性能问题,使用ThreadPoolExecutor实现多线程并发探测:
可配置最大并发线程数,避免打满网络带宽影响业务 扫描任务后台异步执行,前端立即返回执行提示,不会出现页面卡死 扫描结果分批写入数据库,减少IO压力,同时支持中途查看已完成结果
🔄 3. 定时任务持久化调度
APScheduler采用BackgroundScheduler后台运行模式,核心设计点:
使用MySQL作为JobStore,定时任务持久化存储,Django服务重启后任务自动恢复,不会丢失调度 在Django的 apps.py中初始化调度器,应用启动时自动加载所有已启用的巡检策略策略启停时动态调用 add_job和remove_job,无需重启服务,配置即时生效
🔗 4. 事务级资产录入闭环
通过is_registered字段关联扫描记录与资产台账,保证数据一致性:
扫描时自动匹配资产表,实时标记IP是否已纳入管理 录入操作采用事务机制:写入 AssetIP表的同时,更新ScanHistory对应记录的纳管状态前端通过JS异步更新行状态,无需刷新页面,交互流畅自然
🚀 五、快速部署,开箱即用
📋 环境要求
Python 3.13+ MySQL 8.0+ 可选:系统安装Nmap,端口扫描精度更高
一键启动步骤
# 1. 创建并激活虚拟环境python -m venv venv# Linux/Macsource venv/bin/activate# Windowsvenv\Scripts\activate# 2. 安装依赖包pip install django mysqlclient apscheduler python-nmap django-bootstrap5# 3. 创建数据库# 登录MySQL执行:# CREATE DATABASE ip_management DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;# 4. 修改项目配置# 编辑settings.py,更新DATABASES中的数据库地址、账号、密码# 5. 执行数据库迁移python manage.py makemigrations core scan taskpython manage.py migrate# 6. 创建管理员账号python manage.py createsuperuser# 7. 启动服务python manage.py runserver 0.0.0.0:8000
启动后访问 http://localhost:8000,使用创建的管理员账号登录即可使用。
最后
这套工具本质上是面向中小团队运维场景的轻量解决方案,没有复杂的架构和冗余的功能,核心就是解决IP管理里最头疼的「盘点慢、发现晚、台账乱」问题。
平时用空闲时间一点点打磨出来的工具,自己用着顺手,也希望能给同样被IP管理困扰的朋友提供一点思路。大家平时做IP管理都用什么工具?有什么好的玩法?欢迎评论区一起交流~ 这是源码地址:https://download.csdn.net/download/qq_16766705/93345775