Я пишу коллектор Graphite / Diamond для измерения задержки сети. В частности, он должен измерять время, необходимое для открытия соединения с портом на удаленном сервере. И он должен работать через скрипт, то есть люди на клавиатуре не запускают его в интерактивном режиме.
Приведу пример с вымышленным параметром telnet, который будет делать именно то, что мне нужно.
time telnet --close-connection-immediately-after-established somehost.somedomain.com 1234
Trying somehost.somedomain.com...
Connected to somehost.somedomain.com.
Escape character is '^]'.
Connection closed automatically after established.
real 0m3.978s
user 0m0.001s
sys 0m0.003s
В принципе, какой способ вывода 3.978 из командной строки в приведенном выше примере с использованием только встроенных инструментов?
Я полагаю, вы могли бы обернуть telnet в сценарий ожидания, и у него возникла проблема:
^]
close
... но это кажется довольно уродливым. Любые идеи?
Что о :
time nc -zw30 <host> <port>
Используйте что-то вроде:
$: echo 'exit' | time telnet <HOST> <PORT>
Просто используйте ping
или настройте клиент-серверную установку и используйте один из установленных инструментов для тестирования производительности сети unix:
https://www.binarytides.com/linux-commands-monitor-network/
https://access.redhat.com/solutions/2122681
-
Пока time
+nc
полезен для получения приблизительной оценки задержки, его не следует использовать как факт при оценке производственных соединений.
Например, создание и запуск дополнительных процессов (например, time
) стоит, ну, время. Например, я получил результат 15-20 мс с time
+nc
в то время как с традиционным эхо-запросом ping / ICMP результаты были в пределах 3-5 мс. Для быстрого тестирования пинг, казалось, делал свою работу, для более подробных результатов обычно требуется настройка клиент-сервер.