解析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>;
==
==
这是一个从"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>;