Iperf: opción de salida en tiempo real fácilmente analizable

Creado en 23 jul. 2016  ·  4Comentarios  ·  Fuente: esnet/iperf

Hola
Hice una GUI para iperf 2 en Powershell:
https://github.com/ili101/PPerf

Quiero agregar compatibilidad con iperf 3 pero iperf 3 no tiene una opción de salida analizable en tiempo real

iperf 2 tiene salida CSV
iperf 3 tiene salida JSON pero solo se actualiza al final

No creo que JSON pueda admitir actualizaciones en tiempo real debido a su estructura, probablemente la razón por la que lo está actualizando solo al final.

¿Puede agregar compatibilidad con CSV o algo con una funcionalidad similar?

Gracias

Help Wanted enhancement outputs

Comentario más útil

También me gustaría ver esta función. Entiendo que la estructura JSON no se puede ensamblar hasta el final de la prueba, por lo que tal vez tenga un objeto JSON mínimo para cada intervalo de informe. O recupere el soporte csv para una fácil compatibilidad con versiones anteriores.

Todos 4 comentarios

Me las arreglé para analizar la salida de texto.
cortando los datos por las palabras que comienzan la posición del índice en la línea [ID]
pero tiene un pequeño error de que algunos de los datos de las líneas a veces comienzan antes de la posición del encabezado

como el total y las líneas 5.01-5.01 en este ejemplo

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 127.0.0.1, port 63781
[  6] local 127.0.0.1 port 5201 connected to 127.0.0.1 port 64003
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  6]   0.00-1.01   sec   120 KBytes  0.98 Mbits/sec  0.136 ms  0/15 (0%)  
[  6]   1.01-2.01   sec   128 KBytes  1.05 Mbits/sec  0.137 ms  0/16 (0%)  
[  6]   2.01-3.01   sec   128 KBytes  1.05 Mbits/sec  0.169 ms  0/16 (0%)  
[  6]   3.01-4.01   sec   128 KBytes  1.05 Mbits/sec  0.126 ms  0/16 (0%)  
[  6]   4.01-5.01   sec   128 KBytes  1.04 Mbits/sec  0.113 ms  0/16 (0%)  
[  6]   5.01-5.01   sec  0.00 Bytes  0.00 Mbits/sec  0.113 ms  0/0 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  6]   0.00-5.01   sec  0.00 Bytes  0.00 Mbits/sec  0.113 ms  0/79 (0%)  

Me pregunto si algunos de los campos de salida están justificados de una manera divertida. Es cierto que no he investigado esto en absoluto.

Si fuera a intentar analizar esta salida, podría intentar dividir la línea en "palabras" separadas por una cierta cantidad de espacios en blanco (en lugar de por posición en la línea). Piense en los comandos de división de Perl o Python, eso es lo que estoy imaginando.

Romper la línea de datos por los espacios será difícil porque luego necesita conectar las "palabras" al encabezado respetado y no se combinarán.
"0.00-1.01 seg" se dividirá en 2 palabras, pero en realidad es un dato de celda que es "Intervalo".

frenar los datos a las celdas por la posición de la línea del encabezado (luego trabajar en la cadena de celdas) es más fácil

No es solo un problema de lectura de la máquina, no se ve bien que algunos de los datos estén fuera de la celda de la "tabla de imágenes" y tampoco estén alineados con las otras líneas.

También me gustaría ver esta función. Entiendo que la estructura JSON no se puede ensamblar hasta el final de la prueba, por lo que tal vez tenga un objeto JSON mínimo para cada intervalo de informe. O recupere el soporte csv para una fácil compatibilidad con versiones anteriores.

¿Fue útil esta página
0 / 5 - 0 calificaciones