O problema não tem nada a ver com nc
ou netcat
ou qualquer um deles. Você está executando dois comandos aqui, nc
e grep
, mas apenas redirecionando a saída de grep
. O que você quer fazer é:
nc -zv 1.2.3.4 55 &>/dev/null
Isso, é claro, seria inútil, pois, se não houver saída, você não poderá grep
. É para isso que o -q
flag do grep é:
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit
immediately with zero status if any match is found, even if an
error was detected. Also see the -s or --no-messages option.
Então, o que você procura é algo assim:
nc -zv 1.2.3.4 55 2>/dev/null | grep -q " open " && start_daemon
Ou, se você precisar analisar stderr também, isso:
nc -zv 1.2.3.4 55 |& grep -q " open " && start_daemon