一种基于Python实现内网终端溯源的方法及系统技术方案

技术编号:38993110 阅读:11 留言:0更新日期:2023-10-07 10:23
本发明专利技术属于数据库存储并查询技术领域,公开了一种基于Python实现内网终端溯源的方法及系统。该方法由解决IP地址冲突与占用的故障点出发,编写自动执行的python运维脚本,定期存储IP与MAC的对应关系,具体包括:将要获取ARP信息的地址段导出到excel表格中,通过读取表格内的数据,获取到要采集信息的设备IP,然后将要获取的信息,通过在python里调用os.popen函数,拼接为字符串;连接数据库对于历史数据的处理,对IP与MAC地址变更情况的处理。本发明专利技术通过实时记录IP与MAC的对应关系,可以达到解决大型网络中IP地址冲突的问题,能够更快地检测网络中的异常,提升网络的稳定性。提升网络的稳定性。提升网络的稳定性。

【技术实现步骤摘要】
一种基于Python实现内网终端溯源的方法及系统


[0001]本专利技术属于数据库存储并查询
,尤其涉及一种基于Python实现内网终端溯源的方法及系统。

技术介绍

[0002]随着网络的规模越来越庞大,网络中的终端设备种类繁多,如何对越来越复杂的网络进行有效的管理,内部网络中存在ip地址通DHCP动态分发的设备需要跟踪记录ip地址mac地址对应关系,通过记录进行溯源。从而提供高质量的网络服务已成为网络管理所面临的最大挑战。
[0003]在当下,TCP/IP网络中应用最为广泛的网络管理协议是简单网络管理协议SNMP。通过SNMP获取网络设备上的ARP信息,然后实时存储到数据库中,可以帮助网络管理员更好地控制网络,有助于更好地对网络进行管理与维护。
[0004]通过上述分析,现有技术存在的问题及缺陷为:现有技术在设计过程中使用了MD5的哈希算法,极小MD5碰撞产生相同值,但是实地使用场景下如存在设备数量庞大情况,不能保证无碰撞的值产生。使得网络中的异常检测速度慢,网络的稳定性差。

技术实现思路

[0005]为克服相关技术中存在的问题,本专利技术公开实施例提供了一种基于Python实现内网终端溯源的方法及系统。
[0006]所述技术方案如下:一种基于Python实现内网终端溯源的方法,该方法由解决IP地址冲突与占用的故障点出发,编写自动执行的python运维脚本,定期存储IP与MAC的对应关系,具体包括以下步骤:S1,查询能够获取设备上IP和MAC对应关系的OID值,登录机场内综合网子网中作为网关设备的交换机,通过SNMPwalk的命令,获取机场内上网地址段的ARP信息;S2,将要获取ARP信息的地址段导出到excel表格中,通过python的openpyxl库中的load_workbook函数加载表格对象,通过for循环挨个读取,获取到要采集信息的设备IP,然后将要获取的信息,通过执行result_device = os.popen(snmp_order).read().split("\n"),在python里调用os.popen函数,拼接为字符串;S3,连接数据库;S4,对于历史数据的处理,对 IP与MAC地址变更情况的处理。
[0007]进一步的,在步骤S2中,在python里调用os.popen函数的方法包括:snmp_order变量将要查询的设备IP信息,访问设备的团体字,以及设备上要获取的ARP信息:snmp_order=f'snmpwalk
ꢀ‑
Ox
ꢀ‑
v 2c
ꢀ‑
c {community} {ip_switch} {rate}',然后调用os.popen,执行命令;然后获取到设备上的ARP信息;再通过查询数据库中的数据,判断获取到的信息是否已经存储在数据库中,根据
得到的结果,进行对 IP与MAC地址变更情况的处理。
[0008]进一步的, snmp_order变量包括:使用SNMPv2c协议,指定超时时间(

t)为5、重试次数(

r)为3、团体字符串(

c)为community,ip地址为指定设备地址,读取的内容为设备上的ARP信息的SNMP walk命令;community的值包括:场内设备的SNMP读团体字;rate的值,为获取设备上IP地址和MAC地址对应表的OID值;ip_switch,为读取excel中的网络设备的IP地址。
[0009]进一步的,在步骤S3中,连接数据库包括:在远端服务器上建立network的数据库,数据库中的ip_mac表,除包含有ID、IP、MAC,还增添MD5列,用于对数据库里记录的IP与MAC对应关系进行增删改查;构造sql语句,使用python里的hashlib库,通过m=hashlib.md5()创建一个MD5哈希对象,然后使用哈希函数中的hexdigest()方法,以十六进制的形式返回最终的哈希值,构造一个MD5算法的函数,通过python调用pymysql.connect功能,连接到数据库中。
[0010]进一步的,在步骤S4中,对IP与MAC地址变更情况的处理包括:用数据库连接工具连接数据库将ip_mac表中增添first_time、end_time与status列,status列默认置1,表示这个IP与MAC的对应关系有效;在获取到设备上的ARP信息后,对表中原有的数据进行查询。
[0011]进一步的,对表中原有的数据进行查询包括:将新获取到的ip与mac去掉字符,拼接成值为ip+mac的字符串,调用提到的构造出来的MD5的算法,计算得到的MD5值,查询ip_mac表,如果这个值在表中,则认为这个对应关系未发生改变,通过sql语句中的update语句,将end_time更新为脚本的执行时间。
[0012]进一步的,对表中原有的数据进行查询包括:当新获取到的对应关系计算得到的MD5值不在表中,通过sql语句中的select语句,以新获取到对应关系里的mac作为查找条件,搜索这个值对应的IP。
[0013]进一步的,对表中原有的数据进行查询包括:IP在表中,而MD5值与之前不同, IP与MAC的对应关系发生变化,原本表中的数据已经失效,将status置0,并修改end_time,然后将新的对应关系写入表中;IP不在表中,这条对应关系未被记录,直接添加到表中。
[0014]本专利技术的另一目的在于提供一种基于Python实现内网终端溯源的系统包括:ARP信息获取模块,用于通过代码获取机场内上网地址段的ARP信息;字符串拼接模块,用于将要获取ARP信息的地址段导出到excel表格中,通过读取表格内的数据,获取到要采集信息的设备IP,然后将要获取的信息,通过在python里调用os.popen函数,拼接为字符串;数据库连接模块,用于在远端服务器上建立network的数据库;历史数据处理模块,用于对于历史数据的处理,对 IP与MAC地址变更情况的处理。
[0015]结合上述的所有技术方案,本专利技术所具备的优点及积极效果为:本专利技术使用SNMPwalk获取到网络设备上的ARP信息,通过python连接到数据库,将终端的IP与MAC的对应关系操作网络设备获取ARP信息,结合数据库存储并查询。通过将获取到的IP与MAC的对
应关系组合起来,对这个合成的字符串进行MD5运算,由于MD5的压缩性、抗修改性和抗碰撞性,在这里,将这个MD5值作为查询是否已经有ARP记录的查询条件。
[0016]通过实时记录IP与MAC的对应关系,可以达到解决大型网络中IP地址冲突的问题,能够更快地检测网络中的异常,提升网络的稳定性。
附图说明
[0017]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理;图1是本专利技术实施例提供的基于Python实现内网终端溯源的方法流程图;图2是本专利技术实施例提供的基于Python实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Python实现内网终端溯源的方法,其特征在于,该方法由解决IP地址冲突与占用的故障点出发,编写自动执行的python运维脚本,定期存储IP与MAC的对应关系,具体包括以下步骤:S1,查询能够获取设备上IP和MAC对应关系的OID值,登录网络中作为网关设备的交换机,通过SNMPwalk的命令,获取机场内上网地址段的ARP信息;S2,将要获取ARP信息的地址段导出到excel表格中,通过python的openpyxl库中的load_workbook函数加载表格对象,通过for循环挨个读取,获取到要采集信息的设备IP,然后将要获取的信息,通过执行result_device=os.popen(snmp_order).read().split("n"),在python里调用os.popen函数,拼接为字符串;S3,连接数据库;S4,对于历史数据的处理,对IP与MAC地址变更情况的处理。2.根据权利要求1所述的基于Python实现内网终端溯源的方法,其特征在于,在步骤S2中,在python里调用os.popen函数中的参数snmp_order,其构成部分包含将要查询的设备IP信息,访问设备的团体字,以及设备上要获取的ARP信息:snmp_order=f'snmpwalk

Ox

v2c

c{community}{ip_switch}{rate}',然后调用os.popen函数,执行命令;然后获取到设备上的ARP信息;再通过查询数据库中的数据,判断获取到的信息是否已经存储在数据库中,根据得到的结果,进行对IP与MAC地址变更情况的处理。3.根据权利要求2所述的基于Python实现内网终端溯源的方法,其特征在于,snmp_order变量包括:使用SNMPv2c协议,指定超时时间为5、重试次数为3、团体字符串为community,ip地址为指定设备地址,读取的内容为设备上的ARP信息的SNMPwalk命令;community的值包括:场内设备的SNMP读团体字;rate的值,为获取设备上IP地址和MAC地址对应表的OID值;ip_switch,为读取excel中的网络设备的IP地址。4.根据权利要求1所述的基于Python实现内网终端溯源的方法,其特征在于,在步骤S3中,连接数据库包括:在远端服务器上建立network的数据库,数据库中的ip_mac表,除包含有ID、IP、MAC,还增添MD5列,用于对数据库里记录的IP与MAC对应关系进行增删改查;构造sql语句,使用python...

【专利技术属性】
技术研发人员:孙鹏单义升肖仲芳张璇王海胡晓超张建翔刘晓疆
申请(专利权)人:青岛民航凯亚系统集成有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1