0

我需要将网络区域及其名称输入到带有 csv 文件的网络监控软件程序中。该软件只会取区域名称、IP 地址开始和 IP 地址停止。不允许任何 IP 范围重叠。

我们从网络团队获得列表,并且 IP 范围总是重叠,所以到目前为止,我一直在使用 excel 函数来判断它们是否重叠,然后我必须使用 IP 地址计算器并剪切和粘贴来填写范围之间。

基本上我想打开一个这样的列表(csv):

Zone Name, IPStart, IPStop,Range,Source
Group A,10.0.0.0,10.127.255.255,10.0.0.0/9,New List
Group A Sales,10.16.0.0,10.31.255.255,10.16.0.0/12,New List
Group A Sales Primary routers,10.23.1.0,10.23.1.15,10.24.1.0/28,New List
Group A Sales Web Servers,10.16.0.0,10.19.255.255,10.16.0.0/14,New List
Group A Sales Web Servers - Primary,10.18.0.0,10.18.0.255,10.18.0.0/24,New List
Group A Marketing,10.62.0.0,10.62.255.255,10.62.0.0/16,New List
Group A Research,10.62.0.0,10.63.255.255,10.62.0.0/15,Old List
Group B,10.128.0.0,10.255.255.255,10.128.0.0/9,Old List


Into this (with the other ranges filled out as well):

Zone Name, IPStart, IPStop,Range,Source
Group A,10.0.0.0,10.15.255.255,10.0.0.0/12,New List
Group A Sales,10.24.0.0,10.31.255.255,10.24.0.0/13,New List
Group A Sales Web Servers,10.16.0.0,10.17.255.255,10.16.0.0/15,New List
Group A Sales Web Servers - Primary,10.18.0.0,10.18.0.255,10.18.0.0/24,New List
Group A Sales Web Servers,10.19.0.0,10.19.255.255,10.19.0.0/16,New List
Group A Sales,10.20.0.0,10.21.255.255,10.20.0.0/15,New List
Group A Sales,10.22.0.0,10.22.255.255,10.22.0.0/16,New List
Group A Sales,10.23.0.0,10.23.0.255,10.23.0.0/24,New List
Group A Sales Primary routers,10.23.1.0,10.23.1.15,10.24.1.0/28,New List
Group A Sales,10.23.1.16,10.23.1.31,10.23.1.16/28,New List
Group A Sales,10.23.1.32,10.23.1.63,10.23.1.32/27,New List
Group A Sales,10.23.1.64,10.23.1.127,10.23.1.64/26,New List
Group A Sales,10.23.1.128,10.23.1.255,10.23.1.128/25,New List
Group A Sales,10.23.2.0,10.23.3.255,10.23.2.0/23,New List
Group A Sales,10.23.4.0,10.23.7.255,10.23.4.0/22,New List
Group A Sales,10.23.8.0,10.23.15.255,10.23.8.0/21,New List
Group A Sales,10.23.16.0,10.23.31.255,10.23.16.0/20,New List
Group A Sales,10.23.32.0,10.23.63.255,10.23.32.0/19,New List
Group A Sales,10.23.64.0,10.23.127.255,10.23.64.0/18,New List
Group A Sales,10.23.128.0,10.23.255.255,10.23.128.0/17,New List
Group A Marketing,10.62.0.0,10.62.255.255,10.62.0.0/16,New List
Group A Research,10.63.0.0,10.63.255.255,10.62.0.0/16,Old List
Group B,10.128.0.0,10.255.255.255,10.128.0.0/9,Old List

该程序必须优先考虑新列表而不是旧列表,但如果旧列表不与新列表中的任何内容重叠,则仍包括旧列表。

我是编程的初学者,但我曾经了解 C++,并且正在学习 Perl、PHP,并且了解 bash 脚本和 awk/gawk。我一直在互联网上寻找一个程序来做到这一点,但没有什么能接近。我什至不知道该用哪种语言。

拜托,任何程序或至少一些起点都会非常有帮助。谢谢

我最终将不得不编写该程序的一部分来比较和编辑区域名称以满足一定的长度,并根据另一个文件中的条目添加区域位置,所以请记住这一点。

编辑

我一直在学习 Python,所以我想我会为此使用 Python。我很难找到一种方法来检查 Python 中的重叠。我认为最终代码将检查重叠,然后返回两个范围内的所有 IP 地址,然后从较大范围中删除较小范围的地址,然后计算新的地址范围:追加和删除旧地址范围。如果这是有道理的。

目前我并没有积极处理这个问题,我正在处理代码的其他部分以自动处理这些文件。但是,我怀疑这将是我的代码中最复杂的部分,因此不胜感激。

谢谢, B0T

4

1 回答 1

3

看一下 cpan 上的 Net::IP 模块,它有一个程序界面,可让您指定 ip 范围并确定它们是否重叠。理想情况下,您会使用它的对象实现,但是您需要知道什么是面向对象编程以及如何在 perl 中进行。然后,该模块将使您能够创建子网对象并确定是否有任何子网对象具有重叠范围。

于 2013-07-03T18:14:28.953 回答