Veja as perguntas e respostas originais sobre o grep não aceitar a saída do netcat no stderr em umpostagem anterior do StackExchange.
Resposta concisa. Eu gosto disso. Por que adicionar um tee no final não produz nenhum resultado?
nc -zvv localhost 3100-3200 2>&1 | grep succeeded | tee test.txt
Usar apenas tee funciona. Usar apenas grep funciona. Encadear tee após grep não fornece saída (console ou arquivo).
Alguma ideia?
Responder1
DevilaN, Kusalananda,
Obrigado. Foi uma combinação da minha impaciência e comportamento grep e nc. Usando o comando abaixo no meu Raspberry Pi,
nc -nvw1 127.0.0.1 1-65535 2>&1 | grep succeeded | tee test.txt
Todas as portas foram verificadas, ~então~ o console imprimiu 6 portas abertas. Quando usei a opção --line-buffered, o comando se comportou como esperado (imprimindo conforme foram encontrados).
Além disso, o comportamento de buffer do grep aparentemente acontece apenas quando canalizado para tee. Quando tee não é usado e --line-buffered não é usado, grep ainda imprime as portas abertas conforme encontradas.
Sem a opção -w1, a primeira porta aberta é impressa no console pelo grep, mas a saída trava - na verdade, é a saída do nc que trava neste caso.