See original Q&A about grep not accepting netcat output on stderr at a prior StackExchange post.
Concise answer. I like it. Why does adding a tee on the end fail to produce any output?
nc -zvv localhost 3100-3200 2>&1 | grep succeeded | tee test.txt
Using only tee works. Using only grep works. Chaining tee after grep gives no output (console or file).