Estou tentando entender o que grep -v grep
faz abaixo:
ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l
Ou existe uma maneira melhor de encontrar o teste de conexão TCP?
Estou tentando entender o que grep -v grep
faz abaixo:
ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l
Ou existe uma maneira melhor de encontrar o teste de conexão TCP?
Se você quiser verificar se consegue estabelecer uma conexão ssh em 5 segundos e executar um comando, basta fazer:
Seu comando como está faz pouco sentido. Como você não fornece um comando para executar no servidor remoto,
ssh
será executado norlogin
modo, onde um pseudo-terminal é solicitado e o shell de login do usuário remoto é iniciado (ou possivelmente um ForcedCommand).Em seguida, você está aplicando vários filtros à saída:
grep -v "Connection refused"
: filtre qualquer linha da saída que contenhaConnection refused
. Isso faz pouco sentido, pois essa mensagem de erro, se aparecesse, seria escrita em stderr, não na saída padrão quegrep
está filtrando, e também porque:grep "Connected to"
: selecione apenas as linhas que contêmConnected to
. Isso também excluiria as linhas que contêmConnection refused
, pois é improvável que uma linha contenha ambos.grep -v grep
, remova também as linhas que contêmgrep
(para que sejam linhas que contenhamConnected to
egrep
e nãoConnection refused
!)wc -l
: conte o número de linhas resultantes (portanto, as linhas emssh
stdout de 's que contêm,Connected to
exceto aquelas que também contêmgrep
ouConnection refused
). Observe quewc
só produzirá esse número quando a conexão for fechada, quando a sessão do shell for encerrada, como quando o usuário insereexit
. Mas, novamente, como o usuário não verá nenhuma saída (já que tudo acabawc
eventualmente), o usuário terá poucas pistas de que precisa entrarexit
para encerrar a sessão.Exclui todas as linhas que contêm a sequência
grep
de letras da saída do pipe anterior.