纯python库,允许读取scamper(caida的一个互联网测量工具)生成的warts文件格式

scamper-pywarts的Python项目详细描述


#关于pywarts

`pywarts'是一个针对warts格式的纯python解析库。
warts是一个可扩展的二进制格式,由caida的一个互联网测量工具scamper(http://www.caida.org/tools/measurement/scamper/)生成,存储测量结果
如traceroutes和pings。

解析架构的灵感来源于[ryu]包解析器(https://osrg.github.io/ryu/),尽管它不那么复杂,因为要求不那么严格。

traceroute)
-易于扩展为其他warts数据类型(欢迎使用修补程序)
-良好的基于类的接口
-相当好的性能(用traceroute数据解析一个80 mib的warts文件需要几分钟)
-流式接口:最多拉入一个记录
内存在任何给定的时间,因此它应该用有限的内存处理非常大的warts文件。您甚至可以直接从正在运行的scamper进程的输出中使用数据。唯一的公共api是非常低级的:它只是从
流(例如文件)中读取并作为python对象返回warts记录。

要读取记录,请反复调用"warts.parse_record",直到返回
"none"。记住在二进制模式下打开你的输入疣文件!

"warts.parse_record"的返回值是相应子类(例如"traceroute")的一个实例,具体取决于记录类型。
请注意,如果输入文件中不存在,则所有可选属性都设置为none。你应该经常在你的用户代码中检查这种可能性。并反复分析记录,直到找到traceroute记录(warts文件通常有几个
初始记录,其中大多数是无趣的数据)。

````
从warts导入warts
。traceroute导入traceroute

'rb')作为f:
记录=疣。解析记录(f)
而不是isinstance(记录,traceroute):
记录=疣。解析记录(f)
如果记录。src\u地址:
打印("traceroute源地址:",record.src_address)
如果record.dst_address:
打印("traceroute目的地址:",record.dst_address)
打印("跃点数:",len(record.hops))
打印(record.hops)
````

了解哪些属性可用,看看
相关类的定义(在某些时候会有真正的文档)。对于
实例,对于"traceroute",几乎所有属性都是可选的,并在这里定义

[traceroute.py](https://github.com/drakkar lig/scamper py warts/blob/master/warts/traceroute.py l34)。
有些属性不是可选的,在类的"parse()"方法中定义。例如,traceroute对象't'总是在't.hops'中提供一个'traceroutehop'对象的列表。


如果解析失败,则抛出一个'errors.parseerror'实例。
`pywarts'通常会在自身之后尝试清理,所以文件的描述符应该指向下一条记录,即使在解析错误之后也是如此。尤其是当输入文件格式不正确时。






-完全兼容python3
-更好的基于类的接口,而不是具有所有标志的大型dict
-正确处理未知标志和options,忽略它们通常会使属性名更具可读性(尽管这通常意味着更长的名称)
-可能会快一些(它需要适当的基准),因为
是解析标志和字符串的方式。此外,在解析之前,我们会将整个记录
读入内存,这比在非常小的数据量上重复调用
`read()`要快一些。在某些方面,cmand代码可以做更多的事情:

-`pywarts`没有实现不推荐的地址格式(它非常复杂,已经被弃用了好几年)
-在<;https://github.com/cmand/scamper>;,
中有一些不错的脚本,例如附加和控制正在运行的scamper
进程的脚本


只是记录的迭代器?是否允许按记录类型筛选?尝试进一步解析,例如解码
标志或为udp、tcp和icmp生成不同的对象
traceroutes?
-解析时是否应尝试使值正常化?例如,
我们应该对地址使用"ipaddr"对象吗?有时
用厘米表示,有的用微秒表示,有的用秒表示。
我们应该将其标准化为一个公共基吗?时间值的浮动是否可接受

-当出现解析错误时,我们应该怎么做?如果用户想继续分析下一条记录,他/她如何才能继续分析?

如果您对这些问题有想法和想法,请打开问题。

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

推荐PyPI第三方库


热门话题
算法图形。路径方向Java枚举方向问题无法使用EAST   Java:将字符串转换为特定语言环境   javaspringboot&Thymeleaf为后续调用保存搜索表单的最佳方法   mapreduce程序中未调用java reducer   java如何将url中的Gif文件保存到手机中?   如何在JavaSwing中使用[Esc]键最小化JInternalFrame?   java创建了一个包含100个按钮、80个空按钮和20个随机按钮的网格布局   如何在java中使用数组对2d字符串数组中的每一行进行排序。分类   java无法识别的SSL消息,纯文本连接?例外   为什么Java编译器允许在抛出部分列出方法无法抛出的异常   java将预测数组添加到训练数组   java从Ajax调用获取响应文本   使用改型2的java应用程序等待一分钟后退出