Ajuda simples do bashscript para verificar a porta aberta

2

Eu sou novo em programação e atualmente estou quebrando a cabeça sobre um script simples no bash que escrevi:

probe='nc -zv localhost 19997'
output=' grep -c 'succeeded' $probe'
if [ $output == '0' ]
then
     echo 'Client online'
else
     echo 'Offline'
fi

O propósito do script é verificar via netcat se um cliente conectou via ssh reverso ao meu servidor na porta 19997 e imprime uma mensagem positiva se isso foi detectet. nc imprimiria

 Connection to localhost 19997 port [tcp/*] succeeded!

se ele detectar o cliente e eu gostaria de grep apenas o 'bem-sucedido' como uma palavra-chave para a conexão estabelecida e acionar a instrução if através do código de saída do grep. Mas quando eu corro este script eu recebo:

test.sh: line 3: [: too many arguments

Onde eu fiz de errado?

    
por t3ngu 27.12.2017 / 20:57

1 resposta

8

Você pode testar os resultados do comando diretamente assim:

if ( nc -zv localhost 19997 2>&1 >/dev/null ); then
    echo 'Online'
else
    echo 'Offline'
fi

o subshell ( ... ) não é necessário, mas eu gosto de usá-los ao testar assim para limpeza.

Para mais informações sobre códigos de saída e testes, consulte:

por 27.12.2017 / 21:04

Tags