Привет
Я сделал графический интерфейс для iperf 2 в Powershell:
https://github.com/ili101/PPerf
Я хочу добавить поддержку iperf 3, но iperf 3 не имеет опции вывода в реальном времени с возможностью синтаксического анализа
iperf 2 имеет вывод CSV
iperf 3 имеет вывод JSON, но он обновляется только в конце
Я не думаю, что JSON может поддерживать обновления в реальном времени из-за его структуры, возможно, поэтому вы обновляете его только в конце.
Можете ли вы добавить поддержку CSV или что-то с аналогичной функциональностью?
Спасибо
Мне удалось разобрать текстовый вывод
путем вырезания данных по позиции начального индекса слов в строке [ID]
но у вас есть небольшая ошибка, что некоторые данные строк иногда начинаются до позиции заголовка
например, итоговые значения и строки 5.01-5.01 в этом примере
-----------------------------------------------------------
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%)
Интересно, оправданы ли некоторые из полей вывода забавным образом. По общему признанию, я вообще не разбирался в этом.
Если бы я собирался попробовать разобрать этот вывод, я мог бы попробовать вместо этого разбить строку на «слова», разделенные некоторым количеством пробелов (а не позицией в строке). Подумайте о командах разделения Perl или Python, это то, что я представляю.
Разбить строку данных на пробелы будет сложно, потому что тогда вам нужно будет связать «слова» с уважаемым заголовком, и они не будут обрабатываться.
«0,00–1,01 сек» будет разбито на 2 слова, но на самом деле это данные одной ячейки, то есть «Интервал».
торможение данных в ячейки по положению строки заголовка (затем работа со строкой ячеек) проще
Это не только проблема машинного чтения, это не выглядит хорошо, что некоторые данные находятся за пределами ячейки "таблицы изображений", а также не совпадают с другими строками.
Я бы тоже хотел увидеть эту особенность. Я понимаю, что структура JSON не может быть собрана до конца теста, поэтому, может быть, вместо этого нужно иметь минимальный объект JSON для каждого интервала отчетности? Или верните поддержку csv для легкой обратной совместимости.
Самый полезный комментарий
Я бы тоже хотел увидеть эту особенность. Я понимаю, что структура JSON не может быть собрана до конца теста, поэтому, может быть, вместо этого нужно иметь минимальный объект JSON для каждого интервала отчетности? Или верните поддержку csv для легкой обратной совместимости.