Проблема с таймаутом netcat

почему следующая команда netcat не тайм-аут, если попытка подключения занимает больше 3 секунд (т. е. когда порт не открыт)? Я предположил, что флаг-w будет тем, что мне нужно. OS-это OSX 10.9.

nc -v -z -w 3 127.0.0.1 5050

предполагая, что это сработало, я планировал реализовать так (не уверен, что это сработает, total bash noob)

nc -v -z -w 3 127.0.0.1 5050 | /dev/null && echo "Online" || echo "Offline"

2 ответов


вам нужно перенаправить на /dev / null, а не на него. Попробуйте следующее:

nc -v -z -w 3 127.0.0.1 5050 &> /dev/null && echo "Online" || echo "Offline"

на моей машине, порт 5050 не работает, и я получаю следующее:

$ nc -v -z -w 3 localhost 5050 &> /dev/null && echo "Online" || echo "Offline"
Offline

есть старый отчет об ошибке об этом в debian (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=97583) и все еще с тем же поведением в Debian GNU/Linux 7.7 (wheezy)

Я нашел "решение" для этого: установка версии openbsd nc:

apt-get install netcat-openbsd