network_dict创建基于网络子网的字典,该字典返回给定IP的最特定子网。
network_dict的Python项目详细描述
摘要
network_dict创建基于网络子网的字典,该字典返回给定IP的最特定子网。它将与ipv4和ipv6同等工作。
这里有一些简单的铃声和口哨声,使图书馆在不同的情况下有用。
这是一个例子胜于雄辩的例子…
简单示例
fromnetwork_dictimportNetworkDictnetworks={'0.0.0.0/0':'Everything','10.0.0.0/8':'Office','10.1.0.0/16':'Region 1','10.1.1.0/255.255.255.0':'City 1'# Can take multiple netmasks}ns=NetworkDict(networks)>>>nd['10.1.1.1']'City 1'>>>nd.firstHit=False# Return all matching values in a list# Results are in order, most to least specific>>>nd['10.1.1.1']['City 1','Region 1','Office','Everything']>>>nd.format=both# return both the subnet and value in a tuple>>>nd['10.1.1.1'][('10.1.1.0/24','City 1'),('10.1.0.0/16','Region 1'),('10.0.0.0/8','Office'),('0.0.0.0/0','Everything')]>>>nd.format=key# return just the subnet address>>>nd['10.1.1.1']['10.1.1.0/24','10.1.0.0/16','10.0.0.0/8','0.0.0.0/0']
添加子网
>>>nd['192.168.1.1']['0.0.0.0/0']# If 0.0.0.0/0 is not set, will return KeyError exception>>>nd['192.168.1.1/16']='Home'>>>nd['192.168.1.1']['192.168.0.0/16','0.0.0.0/16']# Note that the key was normalized to a proper subnet
主机和/32前缀
>>>nd['10.1.1.1']='Router'>>>nd['10.1.1.1']['10.1.1.0/24','10.1.0.0/16','10.0.0.0/8','0.0.0.0/0']# Hosts are ignored by default>>>nd.ignoreHosts=False>>>nd['10.1.1.1']='Router'['10.1.1.1/32','10.1.1.0/24','10.1.0.0/16','10.0.0.0/8','0.0.0.0/0']
IPv6子网
>>>nd['::1']Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>KeyError:Nomatchingnetworksfound,andnodefaultnetworkset# we didn't set '::/0', which is different from the '0.0.0.0/0' which is already set>>>nd['::1/128']='Localhost'# Note: /128 is a hostmask, so will be ignored if ignoreHosts = True (default)>>>nd['::1']['::1/128']
创建时设置选项
>>>nd=NetworkDict(format='both',firstHit=False,ignoreHosts=True)# Returns an empty NetworkDict object, but with default options set
要求
- 在Python2.8上测试
- NetAddr库
安装
通过PIP或简易安装
$ sudo pip install network_dict # If you prefer PIP $ sudo easy_install network_dict # If you prefer easy_install
手动安装
$ git clone https://github.com/neoCrimeLabs/python-network_dict.git
$ cd python-network_dict
$ sudo python setup.py install
使用条件
我写这个图书馆是为了我自己使用,但我意识到其他人可能会觉得它很有用。
不幸的是,我不能保证任何积极的支持,但我会尽我最大的努力 许可证。也就是说,我很乐意接受带有适当更改的push请求 向图书馆的普通读者致辞。
简单地说,用这个你自己承担风险。如果成功了,太好了!如果没有,我可能不会 能够帮助你。不过,如果你修好了什么,请把它推回去,我会 可能会接受。:-)
此外,如果您在包、工具或商业软件中使用此库,请 我知道,我会把它列在这里!