Разработать shell скрипт для Ubuntu
800 руб.за час
1. Скрипт должен быть отдельно запускаемый (Ubuntu 16.04). Зависимости могут быть nc, ping
2. Параметры запуска
- имя выходного файла. Содержит только имя файла (передача пути является ошибкой выполнения - путь через содержание символа /). Файл создается в директории запуска.
- тестирование доступности
- протокол (udp/tcp/both) если не указан, то оба проверяются
- сервер - ip или dns имя
- порт - порт для тестирования. Возможно указать несколько портов через запятую. Диапазон запретить
- проверить что нельзя передавать другие параметры
- тестирование задержки
- сервер - ip или dns имя
- можно запустить оба теста в один момент
3. Выходные данные
- создается tmp файл в директории запуска (имя передается во время запуска)
- структура данных в json формата
{
"availability":{
"result":"ok | fail", //если хоть одна проверка неудачная, то fail
"fails":[proto:server:port, tcp:demo.rostell.ru:1365], //все проверки, которые вернули ошибку. Если ошибок нет, то []
"success":[proto:server:port, tcp:demo.rostell.ru:1365] //все проверки, которые без ошибок. Если успешных нет, то []
},
"latency":{
"server":"ip/fqdn", //сервер из команды запуска
"transmitted":500, //число
"received":500, //число
"loss":500, //число (% надо пересчитать в абсолютное значение)
"time":"6280", // все значения ниже должны быть текстом в ms. Если значения нет, то равно 0
"rtt_min":"12.162",
"rtt_avg":"12.247",
"rtt_max":"13.038",
"rtt_mdev": "0.091",
"ipg":"12.586",
"ewma":"12.242"
}
}
- блок availability только когда тестирование доступности
- блок latency только когда тестирование задержки
4. Возможные варианты получения данных
- тестирование доступности
- '</dev/proto/server/port'
- 'nc -z -v -i 1 <host> <port>' Для udp добавляется опция -u
- тестирование задержки
- ping -i 0.05 -q -A -c 500 -s 1458 <server>
2. Параметры запуска
- имя выходного файла. Содержит только имя файла (передача пути является ошибкой выполнения - путь через содержание символа /). Файл создается в директории запуска.
- тестирование доступности
- протокол (udp/tcp/both) если не указан, то оба проверяются
- сервер - ip или dns имя
- порт - порт для тестирования. Возможно указать несколько портов через запятую. Диапазон запретить
- проверить что нельзя передавать другие параметры
- тестирование задержки
- сервер - ip или dns имя
- можно запустить оба теста в один момент
3. Выходные данные
- создается tmp файл в директории запуска (имя передается во время запуска)
- структура данных в json формата
{
"availability":{
"result":"ok | fail", //если хоть одна проверка неудачная, то fail
"fails":[proto:server:port, tcp:demo.rostell.ru:1365], //все проверки, которые вернули ошибку. Если ошибок нет, то []
"success":[proto:server:port, tcp:demo.rostell.ru:1365] //все проверки, которые без ошибок. Если успешных нет, то []
},
"latency":{
"server":"ip/fqdn", //сервер из команды запуска
"transmitted":500, //число
"received":500, //число
"loss":500, //число (% надо пересчитать в абсолютное значение)
"time":"6280", // все значения ниже должны быть текстом в ms. Если значения нет, то равно 0
"rtt_min":"12.162",
"rtt_avg":"12.247",
"rtt_max":"13.038",
"rtt_mdev": "0.091",
"ipg":"12.586",
"ewma":"12.242"
}
}
- блок availability только когда тестирование доступности
- блок latency только когда тестирование задержки
4. Возможные варианты получения данных
- тестирование доступности
- '</dev/proto/server/port'
- 'nc -z -v -i 1 <host> <port>' Для udp добавляется опция -u
- тестирование задержки
- ping -i 0.05 -q -A -c 500 -s 1458 <server>
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
За доработки взял адекватную сумму. Советую брать в проекты.