生成本地网络的子网之间的路径,并生成所述本地网络的所有路由器的路由表

rth的Python项目详细描述


路由表帮助程序

一个新技术爱好者为所有网络开发人员、系统管理员和其他可能找到任何 习惯它。 它旨在简化在网络上工作时路由表的创建和计算。只需提供所需数据 足以让程序自行构建路由表并显示给您。在

完成了吗?在

不,这个程序只是第一个稳定版本。我一直希望创造和创新更多,也许不会 更新了一会儿,但也不意味着我让它失望了。在

联系方式

邮寄:biothewolff[at]gmx[dot]fr
不和谐:比奥瑟沃尔夫7708
你也可以在这两个法国不和谐服务器上找到我:

这是什么?在

routingtables Helper(RTH)是一个旨在提供一种简单、快速的创建路由的方法的程序 桌子。不用手工创建它们,使用虚拟机或您自己的网络和一张纸, 这个虚拟网络生成器和路由表生成器为您完成所有这些。在

文件

班级

您要使用的主类是Dispatcher类。您可以从rth.core.dispatcher导入它

其他的类,每个类都做一部分工作,是NetworkCreatorAnts和{}类。 通常,你不会单独使用它们,除非你愿意做一个特别的动作。在

如何使用软件

这里最大的问题是如何以正确的方式格式化数据。 要生成路由表,我们需要三件事:子网、路由器和链路。因为电脑不是 有意识的机器,它需要链接来虚拟地重建网络,并在这些乱七八糟的数字和名字中找到路径。在

程序的一般流程和用法

这是阅读和理解最简单、最快的部分。 您只需要导入调度程序,创建一个实例,execute()以正确的方式完成!在

from rth.core.dispatcher import Dispatcher

inst = Dispatcher()
inst.execute(subnetworks, routers, links)
# And it's all done !

# You can then display the output in the console
inst.display_routing_tables()

# or output it to a file (txt will be the best format for now)
inst.output_routing_tables("D:/Projects/output.txt")

子网数据

子网数据是您必须以以下格式提供的字典:{NAME: CIDR, ...}表示将 子网作为密钥,它们在值上对应CIDR。在

示例:

^{pr2}$

注意:如果您不想给子网取任何名称,请将密钥保留为空字符串(''),它将自动 命名为<Untitled Network#ID:{ID HERE}>(其中{ID HERE}是网络的唯一ID)

路由器数据

路由器数据也是一个字典,类似于子网数据。唯一的区别是你必须给予的价值; 格式是{NAME: HAS_INTERNET_CONNECTION, ...}HAS_INTERNET_CONNECTION必须为True或NoneTrue表示路由器已连接到internet,None表示没有

示例:

routers={0:True,1:None,2:None,3:None}

警告:在当前版本中,只有ONE路由器具有internet连接。如果 多个或少个设置了internet连接。在

具有互联网连接的路由器在下面称为“主路由器”。在

链接数据

链接到最关键的格式也是最重要的。格式是 {ROUTER_NAME: {SUBNETWORK_NAME: IP, ...}, ...}。所以,为了更确切地解释它,你必须把 每个路由器的已连接子网和路由器连接到子网的IP。在

IP值可以是IPv4,也可以是None。如果给定None,程序将自动为路由器分配一个IP, 它将是从子网范围末尾开始的第一个可用地址。在

示例:

links={0:{"A":"10.0.1.200"},1:{"A":None,"C":"10.0.3.254"},2:{"A":"10.0.1.253","B":"10.0.2.253"},3:{"B":"10.0.2.252","C":None}}

现在就把这一切结合到一起
fromrth.core.dispatcherimportDispatchersubnetworks={'A':"10.0.1.0/24",'B':"10.0.2.0/24",'C':"10.0.3.0/24"}routers={0:True,1:None,2:None,3:None}links={0:{"A":"10.0.1.200"},1:{"A":None,"C":"10.0.3.254"},2:{"A":"10.0.1.253","B":"10.0.2.253"},3:{"B":"10.0.2.252","C":None}}inst=Dispatcher()inst.execute(subnetworks,routers,links)

隐藏选项和输出格式

隐藏的选择和对路径的影响

这个标题可能有点奇怪,但一会儿就会明白。专业人士当它遇到几种可能的方法时 从一个子网到另一个子网,必须做出选择。因此,程序所遵循的路径 当然,在最后的路由表上可见可能会打扰您。所以,为了消除疑虑,帮助用户找到 路径更快,我在输出中加入了“跳跃”秒。在

看起来像这样:

----- HOPS -----
From subnetwork A to subnetwork B: router 2
From subnetwork A to subnetwork C: router 2 > router 1
From subnetwork A to subnetwork D: router 2 > router 1 > router 3
From subnetwork B to subnetwork A: router 2

...
(I only show a small amount here, even though in reality there are more lines)

它将帮助您了解所走的道路。在

输出格式

如您所料,路由表的输出不是表。至少现在是这样。 目前的情况如下:

----- ROUTING TABLES -----
Router MyRouter
  - 192.168.0.0/24      : 192.168.0.254 via 192.168.0.254
  - 192.168.1.0/24      : 192.168.1.254 via 192.168.1.254
  - 0.0.0.0/0           : 192.168.1.253 via 192.168.1.254
  - 10.0.0.0/24         : 192.168.0.253 via 192.168.0.254
  - 10.0.1.0/24         : 192.168.1.253 via 192.168.1.254

您可能已经猜到了,它的格式是DESTINATION NETWORK : GATEWAY via INTERFACE

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在构造函数外部添加鼠标侦听器   java如何使用比较器对列表进行排序以正确排序空值?   javajavax。由于javax,邮件“535.7.3身份验证失败”。邮件升级(v1.3.1至v1.5.2)   java将arraylist流到固定的二维数组中并打印?   RecyclerView适配器上的java上下文   java如何为此Twitter API为KafkaProducer建立连接   java Spring安全性重写WebSecurity配置适配器的配置(AuthenticationManagerBuilder)是否会影响全局应用程序?   线程“awteventque0”NullPointerException中的java异常   if条件中的null值和null指针异常java   java树集<Object>允许相同类型的多个对象   java定义类;我认不出   字符串java replaceAll()   JAVAutil。scanner(Java)读取文件时如何跳过空格?   java在swing中关闭flash屏幕   java在Wildfly 16中的应用程序中加载pk12文件   有没有工具可以自动生成屏幕抓取的Java代码   创建意图时,java方法getParcelableExtra()返回null   将数据从java传递到jsp   java Android Studio |永久保存布局