Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 29.05.2019
Сообщений: 55

Автоматизация IPerf

29.05.2019, 13:32. Показов 3843. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые!

Я знаком в программированием на уровне слышал звон. Слышал, что PowerSell очень дружелюбный инструмент и может помочь в деле изучения этого направления.

И вот возникла у меня задача, тестирование каналов связи. Схема очень проста, в ЦОДе запущен сервак iPerf, там где надо шедуллером запускается задача.
Я хочу реализовать эту задачу при помощи PowerShell
Первый ход это запуск программы с ключами

PowerShell
1
PS C:\iperf-3.1.3-win64> .\iperf3.exe -c 10.77.1.29
Результат куча ненужной инфы.
Далее я нашел, выход в выборе нужных строк

PowerShell
1
PS C:\iperf-3.1.3-win64> .\iperf3.exe -c 10.77.1.29 | Select-String -Pattern "receiver", "sender" >> C:\iperf.log
Уже неплохо получаем лог всего из 2х строк с нужными значениями. Казалось бы должно хватать. Но аппетит приходит во время еды
Хотелось бы дописать к строке дату и время теста. Например вот так:
29.05.19 10:10 [ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec sender
29.05.19 10:10 [ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec receiver
А так же убрать лишние строки, которые появляются после каждого теста.
[ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec sender
[ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec receiver
лишняя строка
лишняя строка
лишняя строка
[ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec sender
[ 4] 0.00-10.00 sec 113 MBytes 94.8 Mbits/sec receiver
Так же мне не понятно как сделать это не в командной строке а допустим в PS ISE в виде многострочного кода.

Возможно,в будущем, понадобится складывать логи в общую папку и выделять из общей строки только часть текста.

Помогите, пожалуйста, с решением этой задачки.

З.Ы. Прошу дополнять комменты в код, с описанием действий, чтобы можно было запомнить и понять алгоритм работы. Я же все таки хочу научиться Спасибо!

Добавлено через 3 часа 2 минуты
Удивительная магия Стоило мне написать здесь как сразу стали формулироваться нужные вопросы, соответственно стали появляться нужные ответы.
Зада в целом решена:
PowerShell
1
2
3
4
5
6
$iPerf="C:\iperf-3.1.3-win64\iperf3.exe" #создаем переменную
$Param="-c 10.77.1.29 -P 8 -t 30 -w 32768" #создаем переменную с параметрами запуска iPerf
$Param = $Param.Split(" ") # не знаю, что это значит. где-то подсмотрел
$Array= & "$iPerf" $Param # создаем переменную, запускаем iPerf с параметрами, загружаем результат в переменную(массив строк)
$date=Get-Date -Uformat "%y/%m/%d %H:%M:%S" #получаем текущую дате и время
Out-File -FilePath C:\iperf.log -InputObject $date, $Array[327], $Array[328] -append #Дописываем в лог файл $date и строки массива.
Если у вас есть более изящные решения, буду благодарен.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2019, 13:32
Ответы с готовыми решениями:

Замерять пропускную способность каналов до удалённых серверов c использованием Iperf
Возникла задача замерять пропускную способность канала до удаленных серверов (штук 50). При этом сначала нужно заходить на криптошлюзы...

Автоматизация ПО
Здравствуйте, есть несколько програмок, действие которых нужно автоматизировать, дабы не открывать по 100 раз. Есть какой-нибудь софт на...

Автоматизация
Доврого все вечера.выбрала себе тему курсовой автоматизации записи на прием к врачу..расскажите кто что знает..насколько сложно это...

5
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
29.05.2019, 14:09
https://docs.microsoft.com/ru-... mework-4.8

Если я все правильно понимаю то вы получите вывод после того как программа отработает, и только тогда проставите время по строчкам, у каждой строки будет примерно одно и то же время.
0
1 / 1 / 0
Регистрация: 29.05.2019
Сообщений: 55
29.05.2019, 14:44  [ТС]
Это не имеет принципиального значения, тесты будут проходить несколько раз в сутки.
Да и вопрос даты и время решился иначе. Программа умеет дописывать префикс, префикс понимает %date% %time%
PowerShell
1
2
3
4
5
$iPerf="C:\iperf-3.1.3-win64\iperf3.exe" #создаем переменную
$Param="-c 10.77.1.29 -P 8 -t 30 -w 32768 -T %date%--%time%" #создаем переменную с параметрами запуска iPerf
$Param = $Param.Split(" ") # не знаю, что это значит. где-то подсмотрел
$Array= & "$iPerf" $Param # создаем переменную, запускаем iPerf с параметрами, загружаем результат в переменную(массив строк)
Out-File -FilePath C:\iperf.log -InputObject $Array[327], $Array[328] -append #Дописываем в лог файл строки массива.
Но появилось новая задача! Изменилась схема тестирования. Теперь будет один клиент и куча серваков.
А значит, получаем изменяемый адрес.

Отсюда вопрос, как в переменной использовать список адресов? Догадываюсь, что придется использовать циклы.
PowerShell
1
$Param="-c 10.77.1.29 -P 8 -t 30 -w 32768 -T %date%--%time%" #создаем переменную с параметрами запуска iPerf
Далее будем создавать лог для каждого адреса с результатом.

Дальше нужно будет выцепить значения Даты Время и скорости (94.8 Mbits/sec sender) и уже их записывать в лог. Но это чуть позже

Добавлено через 8 минут
UPD
К сожалению %date%--%time% добавляется как текст, а не как дата и время
%date%--%time%: [ 4] 0.00-10.00 sec 113 MBytes 94.9 Mbits/sec sender
%date%--%time%: [ 4] 0.00-10.00 sec 113 MBytes 94.9 Mbits/sec receiver
М.б. есть другой способ передать значение?
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
29.05.2019, 15:01
Лучший ответ Сообщение было отмечено Asshaker как решение

Решение

можно так попробовать.
PowerShell
1
2
3
4
5
6
7
8
$list = @('10.77.1.29', '10.77.1.30','10.77.1.31','10.77.1.32','10.77.1.33')
$list | %{
    $iPerf="C:\iperf-3.1.3-win64\iperf3.exe" #создаем переменную
    $Param="-c $_ -P 8 -t 30 -w 32768 -T %date%--%time%" #создаем переменную с параметрами запуска iPerf
    $Param = $Param.Split(" ") # не знаю, что это значит. где-то подсмотрел
    $Array= & "$iPerf" $Param # создаем переменную, запускаем iPerf с параметрами, загружаем результат в переменную(массив строк)
    Out-File -FilePath C:\iperf.log -InputObject $Array[327], $Array[328] -append #Дописываем в лог файл строки массива.
}
1
1 / 1 / 0
Регистрация: 29.05.2019
Сообщений: 55
29.05.2019, 16:48  [ТС]
alhaosСпасибо!
Это действительно решение!
На текущий момент получилось вот что:
PowerShell
1
2
3
4
5
6
7
8
9
$ipList=@('10.77.1.29','192.168.22.201','192.168.51.254') #записываем все адреса серваков
$iPerf="C:\iperf\iperf2.exe" #создаем переменную
$ipList | %{ 
$Param="-c $_ -p 12344 -t 10 -w 32768" #создаем переменную с параметрами запуска iPerf
$Param = $Param.Split(" ") # не знаю, что это значит. где подсмотрел
$Array= & "$iPerf" $Param # создаем переменную, запускаем iPerf с параметрами, загружаем результат в переменную(массив строк)
$datetime=Get-Date -UFormat "%d/%m/%Y-%H:%M"
Out-File -FilePath C:\iperf\$_.log -InputObject $datetime, $Array[6] -append #Дописываем в лог файл $date и строки массива.
}
Для понимания происходящего объясните пожалуйста эти части
PowerShell
1
2
$ipList=@('10.77.1.29','192.168.22.201','192.168.51.254') #зачем тут @ ?
$ipList | %{ #что значит % ?
Еще есть вопрос, как внести значение $Array[6] после $datetime, а не с новой строки?
Сейчас результат такой
29/05/2019-16:14
[192] 0.0-10.0 sec 112 MBytes 94.0 Mbits/sec
Дальше буду разбираться как выдергивать переданный размер, скорость подключения, изменю формат ввода даты и хочу выгрузку в единый cvs файл, чтобы потом можно было строить наглядный график.

Добавлено через 22 минуты
По новой строке вопрос снят
PowerShell
1
Out-File -FilePath C:\iperf\$_.log -InputObject `n$datetime, $Array[6] -append -NoNewline #Дописываем в лог файл $date и строки массива.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
30.05.2019, 06:53
Asshaker,

PowerShell
1
$ipList=@('10.77.1.29','192.168.22.201','192.168.51.254') #зачем тут @ ?
@ это строгая нотация объявления массива, в данном случае возможно избыточная

PowerShell
1
2
3
4
5
6
PS C:\Users\semenoval> $a = @()
PS C:\Users\semenoval> $a.GetType()
 
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
PowerShell
1
$ipList | %{ #что значит % ?
% это псевдоним коммандлета ForEach-Object
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2019, 06:53
Помогаю со студенческими работами здесь

Автоматизация XL
Помогите,нужно зделать через поиск решения Сервис->Надстройки->Поиск решения

Автоматизация
Можно каким то образом создать в среде разработки или батник который сможет открывать файлы в определенной папке с помощью стандартного...

Автоматизация
Разъясняю(может кто что подскажет): выполняю на сайте "А" одинаковые действия(авторизуюсь и заполняю формы через определенное время.)Хотел...

Автоматизация
Здравствуйте!!! Подскажите пожалуйста. Создаю приложение для печати идентичных писем адресованным различным адресатом. Выдает ошибку....

Автоматизация
Привет народ! Есть одна работа которую я хочу автоматизировать в виде алгоритма. Чтобы можно было его вставить в html страницу. За помощь в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru