解析iperf文件的程序

iperflexer的Python项目详细描述


iperf lexer(自述文件)
==
==



这是一个从"iperf<;http://sourceforge.net/projects/iperf/>;"输出中提取带宽和数据传输的程序。要安装它,您可以使用pip.

::


安装后,它会创建一个名为"parseIPerf"的命令行命令,也可以用作库(请参阅"sumparser<;https://pythonhosted.org//iperflexer/sumparser.html",使用sumparser>;``类文档获取这样使用的示例)。

--

最初的想法是将它用作管道的一部分,这样您就可以将iperf输出直接管道到它:

iperf-c 192.168.10.5-i 1-p 4 parseiperf

通过管道传送到另一个命令)。您还可以"cat"现有文件:


代码::bash


::


r/>-h,--help显示此帮助消息并退出
-g glob,--glob glob a file glob以匹配输入文件名。(默认值=无)
-u单位,--单位
每秒输出单位
[位、字节、kbits、kbytes、mbits、mbytes、gbits、gbytes]
(默认值=mbits)
-i间隔,--间隔间隔
报告间隔(默认值=1)
--公差
间隔公差(如果分析的间隔与
超出公差的预期值不同,则假设总和
行)(默认值=0.1)
-s,--save如果提供glob,则保存到文件,而不是将
发送到stdout。(默认值=false)
-v,--voodo自己添加线程,而不是使用"sum"行。
(默认值=false)
--pudb enable pudb(如果已安装)。(默认值=False)
--pdb enable pdb(默认值=False)
-t,--tee发送线输入时出现标准错误。
(默认值=False)
-p线程,--threads线程
指定线程数(默认值=4)
-m最大值,--最大值
最大允许带宽(默认值=1000000)
-l,--最后一行带宽
获取IPerf的最终带宽值(默认值=false)
-d,--最后一行传输
获取iperf的最终报告数据传输
(默认值=false)







~~~~

虽然我在上面说过,您可以将输入管道连接到"parseiperf"命令,但也可以使用文件glob将文件名传递给它。它会下降到所有子目录中以查找匹配项,因此您需要确保glob具有足够的限制性,以不匹配意外文件,并且还需要用引号将其括起来(以便在将glob传递给命令之前,shell的接口不会展开glob)。所有文件的输出将被连接并输出到标准输出。

::


parseiperf-g"*.iperf"


尽管我的示例使用了一个glob,但您可以传入一个文件name.

单位
~~~~

`--units``告诉"iperflexer"带宽应该使用什么单位。这段代码的原因之一是允许iperf原始数据以比特/秒为单位输出,然后再转换为更可读的兆比特或千兆比特/秒。单元的名称与IPERF头相匹配(因此要获得每秒兆位,请使用"mbits"。

save s
~saves
~


将每个输入文件的输出保存到单独的文件中。输出文件名将是输入文件名,其中附加有"已解析的.csv"。

~~~~~~

,"--voodoo"标志将告诉"iperflexer"重新添加各个线程(否则它将使用iperf提供的总和值)。现在回想起来,这应该是默认的,但在创建命令行界面时,我对iperf的报告工作原理还没有完全理解。如果您正在进行时间序列分析,那么`--voodoo``区间和将捕获丢失其求和行的报告区间,因此在这种情况下应该考虑更好。但是,重新计算总值的时间间隔不太合适,因此,如果您试图查找整个会话的值,则应使用`--lastlinebandwidth``和`--lastlinetransfers``选项。




tee
~~

`--tee``选项告诉命令将未解析的iperf行发送到标准错误。这样,如果以最初的方式使用它(管道到另一个命令),您仍然可以看到发生了什么,也可以将它管道到另一个命令(包括"parseiperf"命令的另一个实例)。

threads
~~~~~~~

如果使用了多个线程,则必须通过传入`--threads``选项来指定线程数。我可能会更改它使其推断它们,但我最初选择这样做是因为在数据输出不完整的情况下它看起来最安全。

maximum
~当"iperflexer"看到的带宽大于设置的"最大值"(默认值为:math:10^6)时,它会将该值报告为0。

为会话计算的IPERF)。这通常与重新添加间隔计数时得到的值不同,特别是如果任何线程没有及时报告间隔(看起来iperf会删除间隔报告的值,但在线程报告后会将其添加进来)。因为它通常是最后一行,所以您可以使用一些巧妙的"tail"和"sed"组合或其他命令行组合来获得它,但这也将为您转换单位,并允许您处理一组文件。假设您想为以"client"开头以"iperf"结尾的文件创建一列带宽摘要,并将结果存储在"client_summaries.csv"中。您可以使用:

parseiperf-g"client*iperf"-l>;client嫒u summaries.csv

….

最后一行传输
~~~~~~~~~~~~~~~~~~~~~~

它当前与最后一行带宽互斥。这应该最终改变。一收集服务器端信息的示例(假设名称有意义)::


interval
~如果在一行上找到的间隔超过了预期的间隔,则假定它是一个总计行,不由间隔值使用,而是由sumparser.last_line_bandwidth和last_line_transfer使用。

公差
~这是为了防止浮点舍入问题而创建的,但可能不需要设置。

dex.html>;``和'pypi<;https://pythonhosted.org/iperflexer/>;``但是如果您想自己构建它们,这些说明应该会有所帮助。

查找用于文档的重组文本文件——python包也是文档的"sphinx<;http://sphinx doc.org/>;"源。如果要编辑或重新生成文件,则需要pweave::

pip install pweave

请注意,pweave自我开始使用以来已发生更改,需要python 3样式的"print"函数而不是较旧的python"print"语句,因此如果现在安装,某些文件可能会出现编织时出错(生成rst文件)。我不认为他们会,因为我直接使用stdout和stderr,而不是打印,但买家要小心。




sudo apt get install python matplotlib

因为它是Sphinx存储库,所以您当然需要Sphinx::


pip install Sphinx

我使用的是"alabaster<;https://github.com/bitprophet/alabaster>;`"Sphinx"主题,所以您也需要:

pip install alabaster

目前,我使用"sphinxcontrib plantuml"作为UML图。如果你想要它们,你需要plantuml和sphinx扩展::


apt get install plantuml
apt get install graphviz
pip install sphinxcontrollib plantuml

如果是的话,那么当你在"makefile"旁边时,你可以用:


make html

来构建(html)文档,它将把html文件输出到"doc/html"。

…注意:我将html文件同步到一个我的apache服务器可以看到它的文件夹中,因此如果在我忘记在makefile中删除它之前构建它,您可能会看到一个错误,但这不会影响构建的文档(尽管如果只是巧合,您拥有完全相同的文件结构像我一样,它可能会使一些东西(对不起)。

运行测试
----

s://pypi.python.org/pypi/behave>;``和'pyhamcrest<;https://pypi.python.org/pypi/pyhamcrest>;

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

推荐PyPI第三方库


热门话题
java图形在绘制到屏幕时会滞后   java For对较少项目的循环操作   如何用泛型和外部类重构helper方法?(Java Android)   java javafx Web引擎url拦截   java从资源目录加载属性文件(IDE vs runnable JAR)   java获取错误消息“只能导入类型…”尝试执行jsp页面时   java Play框架停留在同一页面上,然后更改语言   快速排序算法求解中的java堆栈溢出异常   java Android从耳机/usb插孔发送/接收字节?   java在使用Intent启动活动时遇到问题   java算法背后的安全。机器人识别码   java Web服务返回类型:字符串、对象或映射   java在Android Studio中使用while循环显示包含textview对象的数据   等待REST请求的响应   递归你能为我解释清楚java的代码吗?   int作为布尔表达式EclipseJava   java如何在RecyclerView中突出显示完全可见的项目视图   java在Android Studio的内部存储中存储ArrayList   java如何使用Ebean查询具有一对一和多对一关系的表