作为城域网维护人员,实际的运维过程中经常为会维护各种业务表格、地址互联表格、公网地址维护、互联地址及管理地址等,通常数据来源于设备采集,表格保存于维护人员的电脑之中,数据需求人员只能远程对应电脑获取相关数据,存在密码泄露及信息安全的风险点。
为解决该问题,分如下几个步奏:1、全量BRAS配置数据采集;2、关键需求信息分析收集;3、开发WEB界面呈现;整个WEB代码使用的是django架构,html使用的是bootstrap工具包,具体功能点实现如下:
以下是每个步奏的代码详细说明:
1、全量BRAS配置数据采集:
过PEXPECT模块登录网络部堡垒机,遍历设备,采集本地城域网设备7750、ME60的配置数据,保存到本地文件系统,实际实现与巡检部分雷同。
2、关键需求信息分析收集:
通过正则表达试匹配出所需要的关键信息,实际代码部分与巡检部分雷同,对于互联地址需要表格间的匹配功能,笔者利用PANDAS模块中的merge函数,实现关键信息的匹配,具体代码如下:
说明:由于互联地址的两个设备地址现网中一般最后一位差值为一,全1地址(例如最后一位为255)一般为地址池中的组播地址,设备互联地址不会使用,故可以简短的对最后一位加1实现对方地址进行计算,具体如上。
3、WEB界面呈现
(1)本系统开发使用的是django模块,语言为常见的python语言,整个代码的web架构如下:
Manage.py为实际整个函数的入口,其指定了配置文件所在位置,其整个代码结构如上。
(2)settings.py设置了整个代码的环境变量:包含了web程序中涉及的运用、成熟的架构、静态文件位置、数据库、根URL等。具体如不限制访问范围,则ALLOWED_HOSTS 要设置为*,具体如下:
(3)url.py制定了代码的访问路径,如下workflow为系统的主要运用入口
A:其中LoginView,为系统函数(位置为:django.contrib.auth.views),用户对应的数据模型如下:
B:网站判断用户是否正常登录是通过构造继承自LoginRequiredMixin类的子类,如验证用户未正常登陆,则直接跳转至登录界面,具体实现方式如下:
(4)本系统中的web所有数据,使用本地mysql数据库,整个数据模型存在于model.py,所有模型类继承于,models.Model,具体数据结构如下
配置文件中的设置情况如下:
(5)最终的代码实现在view.py, 其中使用继承于TemplateView类,呈现给定模板,其中包含在URL中捕获的参数的上下文。
(6)动态按钮的实现方式,先通过读取数据库数据,将相关数据传递给html文件,具体读取过程如下:
在HTML文件中遍历VPN,将相关信息呈现在HTML文件中,便于浏览器解析,具体如下:
Html文件引用了bootstrap前端开发的工具,通过class设置具体呈现格式,减少编写css修饰所造成的工作量。
具体呈现效果如下:
实现了全量台账的WEB呈现,整个系统部署在内网,方便运维人员根据实际需求及时查找,较传统的EXCEL方式,安全性更高。
图1:整个系统呈现界面
图2:vpn专线动态按钮呈现效果
总结:本文给出了设备采集、日志分析方法,并实现了将相关信息通过web程序呈现,介绍了基于django框架具体实现过程,减少了建立了设备台账工作量,降低了台账信息管控松散带来的信息泄露的风险。