博文

目前显示的是 二月, 2021的博文

用Python快捷处理IP地址

Python作为网络工程师利器,在处理网络参数方面比Java强大。 场景 :使用SDWAN将全国各分支点互联,需要规划各节点的网段。通常情况下,接入是个很长时间的持续性活动,几个月甚至更长。而总部可能对各分支机构原来并没有一个统一的ip地址规划。 逻辑 :保持分部的ip不变,当然,如果分部之间冲突还是要重新分配的。网络工程师提出了这样的需求: 给出ip地址列表A,和ip地址列表B。找出A中哪些IP和B中哪些IP有冲突,表示出来。 A包含B,把A中和B冲突的地方剔除,重新生成新的A。 外部库选择: IPy,挺好用,但很久就没人维护了,据说有些计算还不正确 IPAddr和IPNet,谷歌维护的库,非常好用,谷歌宣布功能迁入标准库。里面IPSet相当好用 标准库,没有IPSet,set处理需要自己开发 最终我们选择了最有前途的python原生ipaddress 参考 : https://docs.python.org/zh-cn/3.9/library/ipaddress.html 实现 : https://dev.commverge.com.cn/ 文档格式: 1 列说明 第一列为总部 IP ,第三列尾分支 IP ,第 2 、 4 列为备注说明。 IP 地址有 3 种表示方式: [1.] 192.168.1.0/24 [2.] 192.168.1.0/255.255.255.0 [3.] 192.168.1.1-192.168.1.255 2 行说明 前两行为说明行,数据一律从第三行开始 .3 IP 地址 IP 地址有 3 种表示方式: [1.] 192.168.1.0/24 [2.] 192.168.1.0/255.255.255.0 [3.] 192.168.1.1-192.168.1.255 思路: 将ip从excel读入ListA,ListB stringIpList抓换成ipaddress的二维List:netListA,netListB 二维netListB转换为一维List 遍历netListA[[],[],[]....],一维ListA减一维ListB 得到一个二维list。 代码:      https://github.com/calfen/ipListMinus

爰居爰处?爰丧其马?予以求知?于林之下

图片