Last active
April 10, 2022 05:56
-
-
Save metajiji/ec1da102151076c1c90ef577af2044ed to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@ECHO OFF | |
:: Значения по умолчанию ::::::::::::::::::::::::::: | |
SET TCP_WINDOW=64k | |
SET TARGET_IP=127.0.0.1 | |
SET TARGET_PROTO=tcp | |
:::::::::::::::::::::::::::::::::::::::::::::::::::: | |
:: https://ritchielawrence.github.io/mtee/ | |
:: https://iperf.fr/ | |
SET "PATH=%PATH%;bin/iperf-2.0.4-win32;bin/mtee" | |
:: Включаем расширенную обработку команд. | |
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION | |
:: Выставляем геометрию консоли | |
MODE CON COLS=80 LINES=30 | |
CHCP 866>nul | |
:: Максимальный предпологаемый размер строки | |
SET $MAX_X=77 | |
:main | |
@CLS | |
TITLE Iperf CLI interface by METAJIJI | |
COLOR 1B | |
SET "$item1= I 1 - Запустить клиент iperf." | |
SET "$item2= I 2 - Запустить сервер iperf." | |
SET "$item3= I 0 - Выйти." | |
ECHO. ============================================================================== | |
ECHO. I I | |
ECHO. I Вас приветствует мастер запуска iperf I | |
ECHO. I____________________________________________________________________________I | |
ECHO. I I | |
CALL :SPACES "%$item1%" "%$MAX_X%" && ECHO.%$item1%!$SPACES!I | |
CALL :SPACES "%$item2%" "%$MAX_X%" && ECHO.%$item2%!$SPACES!I | |
CALL :SPACES "%$item3%" "%$MAX_X%" && ECHO.%$item3%!$SPACES!I | |
ECHO. I __________________________________________________________________________ I | |
SET mainprompt=x && SET /p "mainprompt= Выберите пункт меню: " | |
IF /i %mainprompt%==1 CALL :CLIENT | |
IF /i %mainprompt%==c CALL :CLIENT | |
IF /i %mainprompt%==2 CALL :SERVER | |
IF /i %mainprompt%==s CALL :SERVER | |
IF /i %mainprompt%==0 EXIT | |
IF /i %mainprompt%==q EXIT | |
:: Проверяем что ввел пользователь | |
CALL :input_error | |
GOTO main | |
:CLIENT | |
@CLS | |
TITLE Iperf CLIENT CLI interface by METAJIJI | |
COLOR 1B | |
SET "$item1= I 1 - Изменить window size [KM] (socket buffer size): [%TCP_WINDOW%]" | |
SET "$item2= I 2 - Изменить адрес сервера: [%TARGET_IP%]" | |
SET "$item3= I 3 - Изменить протокол: [%TARGET_PROTO%]" | |
SET "$item8= I 8 - Вернуться в главное меню." | |
SET "$item9= I 9 - Запустить." | |
SET "$item0= I 0 - Выйти." | |
ECHO. ============================================================================== | |
ECHO. I I | |
ECHO. I Вас приветствует мастер запуска iperf CLIENT I | |
ECHO. I____________________________________________________________________________I | |
ECHO. I I | |
CALL :SPACES "%$item1%" "%$MAX_X%" && ECHO.%$item1%!$SPACES!I | |
CALL :SPACES "%$item2%" "%$MAX_X%" && ECHO.%$item2%!$SPACES!I | |
CALL :SPACES "%$item3%" "%$MAX_X%" && ECHO.%$item3%!$SPACES!I | |
CALL :SPACES "%$item8%" "%$MAX_X%" && ECHO.%$item8%!$SPACES!I | |
CALL :SPACES "%$item9%" "%$MAX_X%" && ECHO.%$item9%!$SPACES!I | |
CALL :SPACES "%$item0%" "%$MAX_X%" && ECHO.%$item0%!$SPACES!I | |
ECHO. I __________________________________________________________________________ I | |
SET mainprompt=x && SET /p "mainprompt= Выберите пункт меню: " | |
IF /i %mainprompt%==1 CALL :SET_TCP_WINDOW & GOTO :CLIENT | |
IF /i %mainprompt%==2 CALL :SET_TARGET_IP & GOTO :CLIENT | |
IF /i %mainprompt%==3 CALL :SET_TARGET_PROTO & GOTO :CLIENT | |
IF /i %mainprompt%==8 CALL :main | |
IF /i %mainprompt%==b CALL :main | |
IF /i %mainprompt%==9 CALL :START_CLIENT | |
IF /i %mainprompt%==0 EXIT | |
IF /i %mainprompt%==q EXIT | |
:: Проверяем что ввел пользователь | |
CALL :input_error | |
GOTO CLIENT | |
:SERVER | |
@CLS | |
TITLE Iperf SERVER CLI interface by METAJIJI | |
COLOR 1B | |
SET "$item1= I 1 - Изменить TCP window size [KM] (socket buffer size): [%TCP_WINDOW%]" | |
SET "$item2= I 2 - Изменить протокол: [%TARGET_PROTO%]" | |
SET "$item8= I 8 - Вернуться в главное меню." | |
SET "$item9= I 9 - Запустить." | |
SET "$item0= I 0 - Выйти." | |
ECHO. ============================================================================== | |
ECHO. I I | |
ECHO. I Вас приветствует мастер запуска iperf SERVER I | |
ECHO. I____________________________________________________________________________I | |
ECHO. I I | |
CALL :SPACES "%$item1%" "%$MAX_X%" && ECHO.%$item1%!$SPACES!I | |
CALL :SPACES "%$item2%" "%$MAX_X%" && ECHO.%$item2%!$SPACES!I | |
CALL :SPACES "%$item8%" "%$MAX_X%" && ECHO.%$item8%!$SPACES!I | |
CALL :SPACES "%$item9%" "%$MAX_X%" && ECHO.%$item9%!$SPACES!I | |
CALL :SPACES "%$item0%" "%$MAX_X%" && ECHO.%$item0%!$SPACES!I | |
ECHO. I __________________________________________________________________________ I | |
SET mainprompt=x && SET /p "mainprompt= Выберите пункт меню: " | |
IF /i %mainprompt%==1 CALL :SET_TCP_WINDOW & GOTO :SERVER | |
IF /i %mainprompt%==2 CALL :SET_TARGET_PROTO & GOTO :SERVER | |
IF /i %mainprompt%==8 CALL :main | |
IF /i %mainprompt%==b CALL :main | |
IF /i %mainprompt%==9 CALL :START_SERVER | |
IF /i %mainprompt%==0 EXIT | |
IF /i %mainprompt%==q EXIT | |
:: Проверяем что ввел пользователь | |
CALL :input_error | |
GOTO SERVER | |
:START_SERVER | |
@CLS | |
ECHO.^=^>^>^> Для остановки сервера нажмите Ctrl+c ^<^<^<^= | |
ECHO.- Сервер iperf запущен^^! | mtee /D/T/+ Server.log | |
iperf --server %TARGET_PROTO_VAR% --window %TCP_WINDOW% 2>&1 | mtee /+ Server.log | |
PAUSE | |
GOTO SERVER | |
:START_CLIENT | |
@CLS | |
ECHO.- Клиент iperf запущен^^! | mtee /D/T/+ Client.log | |
iperf --client %TARGET_PROTO_VAR% --window %TCP_WINDOW% -c %TARGET_IP% 2>&1 | mtee /+ Client.log | |
PAUSE | |
GOTO CLIENT | |
:: Функция вывода ошибки о неверном вводе с клавиатуры | |
:input_error | |
@CLS | |
ECHO. | |
ECHO. ............................................... | |
ECHO. : ^=^>^>^> Ошибка ввода, попробуйте еще раз^^! ^<^<^<^= : | |
ECHO. : Для продолжения нажмите любую клавишу... : | |
ECHO. :.............................................: | |
PAUSE >nul | |
GOTO :EOF | |
:SET_TARGET_IP | |
CALL :_INPUT_KEYB | |
SET "TARGET_IP=%keyb_value%" | |
GOTO :EOF | |
:SET_TARGET_PROTO | |
IF %TARGET_PROTO%==tcp ( | |
ECHO.change to udp from tcp | |
SET "TARGET_PROTO_VAR=--udp " | |
SET TARGET_PROTO=udp | |
) ELSE IF %TARGET_PROTO%==udp ( | |
ECHO.change to tcp from udp | |
SET "TARGET_PROTO_VAR=" | |
SET TARGET_PROTO=tcp | |
) ELSE ( | |
ECHO.ERROR: TARGET_PROTO is error value! | |
PAUSE | |
EXIT 1 | |
) | |
::TODO - выдавать ошибку, если значение небыло равно ни udp ни tcp. | |
GOTO :EOF | |
:SET_TCP_WINDOW | |
CALL :_INPUT_KEYB | |
SET "TCP_WINDOW=%keyb_value%" | |
GOTO :EOF | |
:_INPUT_KEYB | |
SET keyb_value= | |
SET /P keyb_value=" Введите значение: " | |
::TODO проверять, что ввел пользователь, но позаботиться о том, чтобы пользователь видел, какое было предыдущее значение. | |
::CALL :input_error | |
GOTO :EOF | |
:: Вычисляем количество пробелов, недостающих для выравнивания строки | |
:SPACES | |
::CALL :SPACES <file> <%$MAX_X%> | |
ECHO %~1>%temp%\sz.tmp | |
FOR %%a IN (%temp%\sz.tmp) DO SET "$STR_SIZE=%%~za" | |
DEL /Q %temp%\sz.tmp 2>nul | |
SET /A "$STR_SIZE=$STR_SIZE-2" | |
SET "$SPACES=" | |
FOR /L %%a IN (!$STR_SIZE!,1,%~2) DO SET "$SPACES=!$SPACES! " | |
GOTO :EOF | |
PAUSE | |
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: | |
:: METAJIJI (c) 2013 | |
:: Обратная связь: | |
:: WEB: https://github.com/metajiji | |
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment