grep не совпадает с выходом nc

Я использую nc для сканирования открытых портов, но я просматриваю широкий диапазон и отображает слишком много результатов. Попытка grep его для слова «преуспела» не работает по какой-то причине:

 $ nc -zv localhost 31000-32000 | grep succeeded ... nc: connect to localhost port 31957 (tcp) failed: Connection refused nc: connect to localhost port 31958 (tcp) failed: Connection refused nc: connect to localhost port 31959 (tcp) failed: Connection refused Connection to localhost 31960 port [tcp/*] succeeded! nc: connect to localhost port 31961 (tcp) failed: Connection refused nc: connect to localhost port 31962 (tcp) failed: Connection refused nc: connect to localhost port 31963 (tcp) failed: Connection refused nc: connect to localhost port 31964 (tcp) failed: Connection refused ... 

(Я думал о посылке сообщений об ошибках в /dev/null : nc -zv localhost 31000-32000 2>/dev/null . Но в этом случае результатов нет. Кажется, что все сообщения состояния порта nc являются ошибкой / отладочные сообщения)

nc записывает свой вывод в стандартную ошибку, вам нужно:

 nc -zvv localhost 31000-32000 2>&1 | grep succeeded 

2>&1 перенаправит стандартную ошибку к стандартным выводам, чтобы затем передать ее в grep .