Я хотел бы проверить соединения портов с помощью nc и отправить результат в текстовый файл.

stdout работает нормально. stderr пуст, если вы не используете -v (чего я не хочу), поэтому я хотел бы настроить вывод ошибок, например Servername: no connection

nc — версия v1.10-41+b1.

Вот команда

nc -z -G 5 $Servername $Portname >> telnet_log.txt 2>&1
0
roaima 26 Ноя 2019 в 15:13
1
Не могли бы вы привести пример вашей ситуации, пожалуйста.
 – 
roaima
26 Ноя 2019 в 14:37
Мой nc (v1.10-41+b1) выводит это сообщение на стандартный вывод.
 – 
Panki
26 Ноя 2019 в 14:39
Вот команда: nc -z -G 5 $Servername $Portname >> telnet_log.txt 2>&1
 – 
stefan_parpart
26 Ноя 2019 в 14:44

1 ответ

nc в macOS завершает работу с ненулевым статусом выхода, если ему не удается подключиться к хосту. Вы можете использовать этот факт в операторе if для вывода собственного сообщения об ошибке:

if ! nc -z -G 5 "$server" "$port"; then
    printf '%s: no connection (port=%s)\n' "$server" "$port" >&2
fi >>nc-results.log 2>&1

Это добавит любые данные, которые nc выдает на стандартный вывод, в файл nc-report.log, если он успешно подключится, но добавит вашу собственную пользовательскую ошибку, если он не подключится.

1
Kusalananda 27 Ноя 2019 в 12:14
Спасибо, это гораздо лучше, чем то, что я понял за это время: nc -z -G 5 $Servername $Portname >> nc_log.txt 2>&1; если [$? -ne 0]; затем эхо $Servername": Нет соединения" >> $nc_log; фи
 – 
stefan_parpart
26 Ноя 2019 в 15:07