Às vezes, é preciso abrir uma conexão TCP simples e, nos protocolos de texto, conversar diretamente com o serviço. O telnet faz esse teste, e o PowerShell consegue substituí-lo quando o telnet não está instalado.
O teste com o telnet
telnet 203.0.113.20 9000: tenta abrir uma conexão com a porta 9000 do endereço público da matriz.
Quando a conexão abre, a janela fica em branco ou mostra a mensagem inicial do serviço. Um banco de dados MySQL, por exemplo, envia alguns caracteres, entre eles a versão do MySQL. Quando a conexão falha, o telnet informa que não foi possível abrir a conexão. O tempo até a falha também informa: uma falha imediata indica recusa, e uma falha que demora indica tempo esgotado.
Nos protocolos de texto, o telnet permite enviar dados e ver a resposta do serviço. Nos protocolos binários ou com criptografia, o telnet prova apenas que a conexão TCP abriu.
Como sair do telnet
- A combinação das teclas Ctrl e colchete direito abre o modo de comando do telnet.
- O comando quit, digitado nesse modo, encerra o telnet.
Quando o telnet não está instalado
O cliente telnet vem desativado no Windows. Para ativá-lo, o comando a seguir é executado no Prompt de Comando aberto como administrador:
dism /online /Enable-Feature /FeatureName:TelnetClient
Quando não é possível instalar nada, o PowerShell faz o mesmo trabalho, inclusive em versões antigas do Windows, que não têm o Test-NetConnection. Os comandos são executados um por vez:
$c = New-Object System.Net.Sockets.TcpClient("192.168.0.50", 9000): abre a conexão com o endereço e a porta indicados;$s = $c.GetStream(): obtém o canal de comunicação da conexão;$w = New-Object System.IO.StreamWriter($s): prepara o envio de texto;$r = New-Object System.IO.StreamReader($s): prepara a leitura das respostas;$w.WriteLine("COMANDO"): escreve uma linha de texto para o serviço;$w.Flush(): envia o que foi escrito;$r.ReadLine(): lê uma linha da resposta;$c.Close(): encerra a conexão.
Se o primeiro comando terminar com uma mensagem de erro, a conexão não abriu. Para um simples teste de porta, basta esse primeiro comando.
No suporte
O telnet é uma forma comum de testar, a partir da loja, a porta de comunicação da matriz. Para diferenciar a recusa do tempo esgotado, convém observar quanto tempo o telnet leva para falhar.
Para guardar
- O telnet abre uma conexão TCP simples.
- A interação com o serviço só faz sentido nos protocolos de texto.
- Uma falha imediata indica recusa, e uma falha demorada indica tempo esgotado.
- O PowerShell substitui o telnet quando ele não está instalado.
O telnet abriu a conexão na porta do serviço, e a janela ficou em branco. Isso prova que o sistema vai funcionar?
Não. O teste prova que a conexão TCP abriu. O protocolo da aplicação, a autenticação e as eventuais portas adicionais ainda precisam funcionar.
Em um computador com uma versão antiga do Windows, sem o Test-NetConnection e sem o telnet instalado, como testar a porta 3306 do servidor da loja?
Com o primeiro comando do PowerShell, que cria a conexão: $c = New-Object System.Net.Sockets.TcpClient("192.168.1.10", 3306). Se o comando terminar sem erro, a porta aceitou a conexão. Com permissão de administrador, também é possível ativar o telnet pelo comando dism.